Skip to content

OTR_Authentication

nishi_74322014 edited this page Oct 27, 2026 · 1 revision

認証とユーザ情報

概要

Open 棟梁の認証の主眼は、認証済みユーザの情報をどう保持するかである。

  • 認証そのものの仕組みは提供しない。Web では .NET の認証(Forms 認証、Cookie 認証)と組み合わせて使う。
  • ログイン時は、.NET 側のサインインと、Open 棟梁のユーザ情報の設定の両方を行う。 片方だけでは動かない。

詳細

ユーザ情報クラス

階層 クラス 担当 中身
ユーザ情報親クラス1 UserInfo フレームワーク 空のクラス(マーカー)
ユーザ情報親クラス2 MyUserInfo 纏め者 既定のテンプレートは UserName / IPAddress のみ。所属・権限などはプロジェクトが追加する
  • MyUserInfo に項目を足せるのは纏め者だけ。足りない情報は、まず引数クラスで渡せないかを検討する。

ユーザ情報の流れ(Web)

【ログイン時】アプリのログイン処理
    ① .NET 側のサインイン(Cookie 認証など)
    ② UserInfoHandle.SetUserInformation(new MyUserInfo(userName, ipAddress))  → Session へ
【リクエストごと】P 層の親クラス2
    this.UserInfo に Session から取り出して設定(無ければ認証チケットから復元)
【B 層の呼び出し時】開発者
    new TestParameterValue(..., this.UserInfo)   → 引数クラスで B 層へ
何をするか 仕組み
① .NET 側 認証状態を維持する net48:Forms 認証/net10.0:Cookie 認証(ClaimsPrincipal + SignInAsync)
② Open 棟梁側 フレームワークが使うユーザ情報を保持する MyUserInfo + UserInfoHandle(Session)
  • this.UserInfo は null にならない。Session に無ければ認証チケットから復元され、未認証なら UserName が "未認証" になる。
  • ただし、復元では UserName と IPAddress しか埋まらない。プロジェクト固有の項目を持たせるには、ログイン時に完全な MyUserInfo を Session に入れる。

UserInfoHandle

メソッド 用途
SetUserInformation(userInfo) Session へ格納(ログイン時)
GetUserInformation<T>() Session から取得(net10.0)
GetUserInformation() Session から取得(net48)
DeleteUserInformation() Session から削除(ログアウト時)
  • 同名でもランタイムでシグネチャが違う(net10.0 では Session に JSON で格納する)。両対応のコードでは注意する。

やってはいけないこと

  • Session から直接ユーザ情報を読む(UserInfoHandle を経由する)。
  • B 層で UserInfoHandle からユーザ情報を取る(引数クラス経由で受け取る。B 層が Session に依存してはならない)。
  • P 層で毎回 GetUserInformation() を呼ぶ(親クラス2 が取得済み。this.UserInfo を使う)。

リッチクライアント・外部 IdP

  • Windows Forms は UserInfoHandle も Session も使わず、MyBaseControllerWin.UserInfo(static)で保持する。
  • 外部の IdP でログインさせる場合はOAuth2 / OIDC クライアント。成功後の処理は上記と同じ。

コーディング・エージェントに任せる場合

  • スキル opentouryo-auth を使わせる。
  • 認証まわりはセキュリティ上の影響が大きいので、①と②の両方が実装されているか、ログアウトで両方を消しているかを人がレビューする。

参考


Tags: 再構築

NetDevInfraWiki

マイクロソフト系技術情報 Wiki
Open 棟梁 Wiki
開発基盤部会 Wiki

移行管理: DONE / TODO

Clone this wiki locally