cmdbox.app.auth package

Submodules

cmdbox.app.auth.azure_signin module

class cmdbox.app.auth.azure_signin.AzureSignin(logger: Logger, signin_file: Path, signin_file_data: Dict[str, Any], appcls, ver)[source]

Bases: Signin

classmethod get_email(data: Any) str[source]

アクセストークンからメールアドレスを取得します

Parameters:

data (str) -- アクセストークン又は属性データ

Returns:

メールアドレス

Return type:

str

request_access_token(conf: Dict, req: Request, res: Response) str[source]

アクセストークンを取得します

Parameters:
  • conf (Dict) -- サインインモジュールの設定

  • req (Request) -- リクエスト

  • res (Response) -- レスポンス

Returns:

アクセストークン

Return type:

str

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

classmethod get_email(data: Any) str[source]

アクセストークンからメールアドレスを取得します

Parameters:

data (str) -- アクセストークン又は属性データ

Returns:

メールアドレス

Return type:

str

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

classmethod get_email(data: Any) str[source]

アクセストークンからメールアドレスを取得します

Parameters:

data (str) -- アクセストークン又は属性データ

Returns:

メールアドレス

Return type:

str

request_access_token(conf: Dict, req: Request, res: Response) str[source]

アクセストークンを取得します

Parameters:
  • conf (Dict) -- サインインモジュールの設定

  • req (Request) -- リクエスト

  • res (Response) -- レスポンス

Returns:

アクセストークン

Return type:

str

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

classmethod get_email(data: Any) str[source]

アクセストークンからメールアドレスを取得します

Parameters:

data (str) -- アクセストークン又は属性データ

Returns:

メールアドレス

Return type:

str

request_access_token(conf: Dict, req: Request, res: Response) str[source]

アクセストークンを取得します

Parameters:
  • conf (Dict) -- サインインモジュールの設定

  • req (Request) -- リクエスト

  • res (Response) -- レスポンス

Returns:

アクセストークン

Return type:

str

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_data() Dict[str, Any][source]

サインインデータを返します

Returns:

サインインデータ

Return type:

Dict[str, Any]

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]

request_access_token(conf: Dict, req: Request, res: Response) str[source]

アクセストークンを取得します

Parameters:
  • conf (Dict) -- サインインモジュールの設定

  • req (Request) -- リクエスト

  • res (Response) -- レスポンス

Returns:

アクセストークン

Return type:

str

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

Module contents