cmdbox.app.auth package
Submodules
cmdbox.app.auth.azure_signin module
cmdbox.app.auth.azure_signin_saml module
- class cmdbox.app.auth.azure_signin_saml.AzyreSigninSAML(logger: Logger, signin_file: Path, signin_file_data: Dict[str, Any], appcls, ver)[source]
Bases:
SigninSAML
cmdbox.app.auth.github_signin module
- class cmdbox.app.auth.github_signin.GithubSignin(logger: Logger, signin_file: Path, signin_file_data: Dict[str, Any], appcls, ver)[source]
Bases:
Signin
cmdbox.app.auth.google_signin module
- class cmdbox.app.auth.google_signin.GoogleSignin(logger: Logger, signin_file: Path, signin_file_data: Dict[str, Any], appcls, ver)[source]
Bases:
Signin
cmdbox.app.auth.signin module
- class cmdbox.app.auth.signin.Signin(logger: Logger, signin_file: Path, signin_file_data: Dict[str, Any], appcls, ver)[source]
Bases:
object
- check_apikey(req: Request, res: Response) None | RedirectResponse [source]
ApiKeyをチェックする
- Parameters:
req (Request) -- リクエスト
res (Response) -- レスポンス
- Returns:
サインインエラーの場合はリダイレクトレスポンス
- Return type:
Union[None, RedirectResponse]
- check_cmd(req: Request, res: Response, mode: str, cmd: str)[source]
コマンドの認可をチェックします
- Parameters:
req (Request) -- リクエスト
res (Response) -- レスポンス
mode (str) -- モード
cmd (str) -- コマンド
- Returns:
認可されたかどうか
- Return type:
bool
- check_password_policy(user_name: str, password: str, new_password: str) Tuple[bool, str] [source]
パスワードポリシーをチェックする
- Parameters:
user_name (str) -- ユーザー名
password (str) -- 元パスワード
new_password (str) -- 新しいパスワード
- Returns:
True:ポリシーOK, False:ポリシーNG str: メッセージ
- Return type:
bool
- check_path(req: Request, path: str) None | RedirectResponse [source]
パスの認可をチェックします
- Parameters:
req (Request) -- リクエスト
path (str) -- パス
- Returns:
認可された場合はNone、認可されなかった場合はリダイレクトレスポンス
- Return type:
Union[None, RedirectResponse]
- check_signin(req: Request, res: Response) None | RedirectResponse [source]
サインインをチェックする
- Parameters:
req (Request) -- リクエスト
res (Response) -- レスポンス
- Returns:
サインインエラーの場合はリダイレクトレスポンス
- Return type:
Union[None, RedirectResponse]
- classmethod correct_group(signin_file_data: Dict[str, Any], group_names: List[str], master_groups: List[Dict[str, Any]]) List[str] [source]
指定されたグループ名に属する子グループ名を収集します
- Parameters:
signin_file_data (Dict[str, Any]) -- サインインファイルデータ
group_names (List[str]) -- グループ名リスト
master_groups (List[Dict[str, Any]], optional) -- 親グループ名. Defaults to None.
- get_email(data: Any) str [source]
アクセストークンからメールアドレスを取得します
- Parameters:
data (str) -- アクセストークン又は属性データ
- Returns:
メールアドレス
- Return type:
str
- get_enable_cmds(mode: str, req: Request, res: Response) List[str] [source]
認可されたコマンドを取得します
- Parameters:
mode (str) -- モード
req (Request) -- リクエスト
res (Response) -- レスポンス
- Returns:
認可されたコマンド
- Return type:
List[str]
- get_enable_modes(req: Request, res: Response) List[str] [source]
認可されたモードを取得します
- Parameters:
req (Request) -- リクエスト
res (Response) -- レスポンス
- Returns:
認可されたモード
- Return type:
List[str]
- get_groups(access_token: str, user: Dict[str, Any]) Tuple[List[str], List[int]] [source]
ユーザーのグループを取得します
- Parameters:
access_token (str) -- アクセストークン
user (Dict[str, Any]) -- ユーザーデータ
signin_file_data (Dict[str, Any]) -- サインインファイルデータ(変更不可)
- Returns:
(グループ名, グループID)
- Return type:
Tuple[List[str], List[int]]
- jadge(email: str) Tuple[bool, Dict[str, Any]] [source]
サインインを成功させるかどうかを判定します。 返すユーザーデータには、uid, name, email, groups, hash が必要です。
- Parameters:
email (str) -- メールアドレス
- Returns:
(成功かどうか, ユーザーデータ)
- Return type:
Tuple[bool, Dict[str, Any]]
- classmethod load_groups(signin_file_data: Dict[str, Any], apikey: str, logger: Logger)[source]
APIキーからユーザグループを取得します :param signin_file_data: サインインファイルデータ :type signin_file_data: Dict[str, Any] :param apikey: APIキー :type apikey: str :param logger: ロガー :type logger: logging.Logger
- Returns:
ユーザグループの情報
- Return type:
Dict[str, Any]
- classmethod load_signin_file(signin_file: Path, signin_file_data: Dict[str, Any] = None) Dict[str, Any] [source]
サインインファイルを読み込む
- Parameters:
signin_file (Path) -- サインインファイル
signin_file_data (Dict[str, Any]) -- サインインファイルデータ
- Raises:
HTTPException -- サインインファイルのフォーマットエラー
- Returns:
サインインファイルデータ
- Return type:
Dict[str, Any]
- async cmdbox.app.auth.signin.create_request_scope(req: Request = None, res: Response = None, websocket: WebSocket = None)[source]
FastAPIのDepends用に、ContextVarを使用してリクエストスコープを提供します。 これにより、リクエストごとに異なるRequestオブジェクトを取得できます。 これは、FastAPIのDependsで使用されることを意図しています。 次のように使用します。
Example
from cmdbox.app.auth import signin from fastapi import Depends, Request, Response
@app.get("/some-endpoint") async def some_endpoint(req: Request, res: Response, scope=Depends(signin.create_request_scope)):
# 何らかの処理
- Parameters:
req (Request) -- リクエスト
res (Response) -- レスポンス
websocket (WebSocket) -- WebSocket接続
- cmdbox.app.auth.signin.get_request_scope() Dict[str, Any] [source]
FastAPIのDepends用に、ContextVarからリクエストスコープを取得します。
Example
from cmdbox.app.auth import signin from fastapi import Request, Response scope = signin.get_request_scope() scope['req'] # Requestオブジェクト scope['res'] # Responseオブジェクト scope['session'] # sessionを表す辞書 scope['websocket'] # WebSocket接続 scope['logger'] # loggerオブジェクト
- Returns:
リクエストとレスポンスとWebSocket接続
- Return type:
Dict[str, Any]
cmdbox.app.auth.signin_saml module
- class cmdbox.app.auth.signin_saml.SigninSAML(logger: Logger, signin_file: Path, signin_file_data: Dict[str, Any], appcls, ver)[source]
Bases:
Signin
- jadge(email: str) Tuple[bool, Dict[str, Any]] [source]
サインインを成功させるかどうかを判定します。 返すユーザーデータには、uid, name, email, groups, hash が必要です。
- Parameters:
email (str) -- メールアドレス
- Returns:
(成功かどうか, ユーザーデータ)
- Return type:
Tuple[bool, Dict[str, Any]]
- async make_saml(prov: str, next: str, form_data: Dict[str, Any], req: Request, res: Response) Any [source]
SAML認証のリダイレクトURLを取得する :param prov: プロバイダ名 :type prov: str :param next: リダイレクト先のURL :type next: str :param req: リクエスト :type req: Request :param res: レスポンス :type res: Response
- Returns:
SAML認証オブジェクト
- Return type:
OneLogin_Saml2_Auth