「Open棟梁 wiki」は、「Open棟梁Project」,「OSSコンソーシアム .NET開発基盤部会」によって運営されています。
目次 †
概要 †
- 汎用認証サイトのコンフィギュレーションを纏めた。
- 本番稼働前にどのあたりに注意が必要か?などについても記載した。
connectionStrings †
https://github.com/OpenTouryoProject/MultiPurposeAuthSite/blob/develop/root/programs/MultiPurposeAuthSite/MultiPurposeAuthSite/Web.config
接続文字列を設定する。
globalization †
https://github.com/OpenTouryoProject/MultiPurposeAuthSite/blob/develop/root/programs/MultiPurposeAuthSite/MultiPurposeAuthSite/Web.config#L23
カルチャ設定を設定する。
compilation debug †
https://github.com/OpenTouryoProject/MultiPurposeAuthSite/blob/develop/root/programs/MultiPurposeAuthSite/MultiPurposeAuthSite/Web.config#L25
デバッグ・モードを設定する。
sessionState †
https://github.com/OpenTouryoProject/MultiPurposeAuthSite/blob/develop/root/programs/MultiPurposeAuthSite/MultiPurposeAuthSite/Web.config#L55
タイムアウト値や、クラスタリング対応など、Session設定を行う。
customErrors †
https://github.com/OpenTouryoProject/MultiPurposeAuthSite/blob/develop/root/programs/MultiPurposeAuthSite/MultiPurposeAuthSite/Web.config#L101
エラーが画面の表示方法の変更。offはデバッグ時設定。
実行基盤系 †
FxLog4NetConfFile? †
https://github.com/OpenTouryoProject/MultiPurposeAuthSite/blob/develop/root/programs/MultiPurposeAuthSite/MultiPurposeAuthSite/app.config#L25
ログ出力方法を設定する。
FxSessionTimeOutCheck? †
https://github.com/OpenTouryoProject/MultiPurposeAuthSite/blob/develop/root/programs/MultiPurposeAuthSite/MultiPurposeAuthSite/app.config#L38
- Sessionのタイムアウト検出機能のON/OFFを設定する。
- 企業向けビジネス・アプリケーションではON推奨だが、汎用認証サイトはOFFでも良い。
UserStoreType? †
https://github.com/OpenTouryoProject/MultiPurposeAuthSite/blob/develop/root/programs/MultiPurposeAuthSite/MultiPurposeAuthSite/app.config#L88
- 使用するユーザストアのストレージタイプを選択する。
- memの場合は、IsDebug?がtrueの扱いになるので注意する。
デバッグモード(IsDebug?) †
https://github.com/OpenTouryoProject/MultiPurposeAuthSite/blob/develop/root/programs/MultiPurposeAuthSite/MultiPurposeAuthSite/app.config#L85
- デバッグモードをOFF(false)に変更する。
- 以下は、このフラグが影響を与える機能の一覧。
テスト・ユーザ登録 †
する(true)/しない(false)。
デバッグ・ログ出力 †
log4net & Debug.WriteLine?への併出(true)/log4net(false)
通知(Notification) †
Debug.WriteLine?へ出力(true)/Notification Providerへ出力(false)
オンライン決済 †
オンライン決済のテスト機能を表示/実行する(false)/しない(true)。
動作モード †
Multi-tenant †
https://github.com/OpenTouryoProject/MultiPurposeAuthSite/blob/develop/root/programs/MultiPurposeAuthSite/MultiPurposeAuthSite/app.config#L91
データのテナント分割と、オブジェクトのオーナーの考え方の導入
(主に管理者アカウントが使用する管理画面の動作に影響)。
動作が大きく異なるので初期から適切な方を選択してテストする(詳しくは下記参照)。
- マルチテナント化していない場合、
システム管理者だけが管理画面を使用可能。
- ユーザ管理
- 管理者アカウント:システム管理者のみ
- オブジェクトのオーナー:システム管理者のみ
- ロール管理
- 管理者アカウント:システム管理者のみ
- オブジェクトのオーナー:システム管理者のみ
- マルチテナント化している場合、
管理画面ではテナント・データのみが管理対象になる。
- ユーザ管理
- 管理者アカウント:システム管理者とサインアップ・ユーザ
- オブジェクトのオーナー:システム管理者とサインアップ・ユーザ
- ロール管理
- 管理者アカウント:システム管理者とサインアップ・ユーザ
- オブジェクトのオーナー:システム管理者とサインアップ・ユーザ
RequireUniqueEmail? †
https://github.com/OpenTouryoProject/MultiPurposeAuthSite/blob/develop/root/programs/MultiPurposeAuthSite/MultiPurposeAuthSite/app.config#L120
UserName?がEmailかどうか。
動作が大きく異なるので初期から適切な方を選択してテストする(詳しくは下記参照)。
- RequireUniqueEmail? : true
- UserName? = E-mailアドレス
- インターネット環境の標準の実装はこちら。
- E-mailアドレスでサインアップし、
直ちにE-mailアドレスの確認(E-mail confirmation)を行う。
- RequireUniqueEmail? : false
- UserName? = 任意文字列
- ユーザストアを管理者が準備するエンプラ向き実装はこちら。
- E-mailアドレスの確認(E-mail confirmation)は不要
- サインアップで、E-mailアドレスが提供されないので、
E-mailアドレスの確認(E-mail confirmation)が実質的に不可能。
- サインアップ画面を提供せず、管理者がアカウント(E-mailアドレス)を準備する。
- 若しくは、サインアップ画面を提供し、"ユーザ名 @ サイトのドメイン"でメアドを準備するなどとする。
- 外部ログインの場合
- サインアップ・サインインも可能ではある。
- しかし、基本的には"外部ログイン = OFF"だと考える。
文面ファイル(国際化対応済) †
https://github.com/OpenTouryoProject/MultiPurposeAuthSite/blob/develop/root/programs/MultiPurposeAuthSite/MultiPurposeAuthSite/app.config#L113
文面ファイルのロケーションを設定する。
AdministratorUID/PWD †
https://github.com/OpenTouryoProject/MultiPurposeAuthSite/blob/develop/root/programs/MultiPurposeAuthSite/MultiPurposeAuthSite/app.config#L97
- システム管理者のアカウントを入力する。
- パスワード(AdministratorPWD)は稼働後(DB登録後)、削除して問題ない。
サインアップ、サインイン・サインアウト †
ユーザ名 †
https://github.com/OpenTouryoProject/MultiPurposeAuthSite/blob/develop/root/programs/MultiPurposeAuthSite/MultiPurposeAuthSite/app.config#L118
- AllowOnlyAlphanumericUserNames?
UserName?が英字と数字のみかどうか。
- RequireUniqueEmail?
との兼ね合いを考慮すること。
パスワード †
https://github.com/OpenTouryoProject/MultiPurposeAuthSite/blob/develop/root/programs/MultiPurposeAuthSite/MultiPurposeAuthSite/app.config#L131
- RequiredLength?
必要な文字列長(最小の文字列長)
- RequireNonLetterOrDigit?
英数以外の文字を必要とするかしないか。
- RequireDigit?
数字を必要とするかしないか。
- RequireLowercase?
小文字を必要とするかしないか。
- RequireUppercase?
大文字を必要とするかしないか。
サインアップ †
https://github.com/OpenTouryoProject/MultiPurposeAuthSite/blob/develop/root/programs/MultiPurposeAuthSite/MultiPurposeAuthSite/app.config#L123
- DisplayAgreementScreen?
約款画面を表示するかどうか。
- EmailConfirmationTokenLifespanFromHours?
メアド検証リンクの有効期限(時間)
認証チケット †
ロックアウト †
https://github.com/OpenTouryoProject/MultiPurposeAuthSite/blob/develop/root/programs/MultiPurposeAuthSite/MultiPurposeAuthSite/app.config#L138
サインインにおいて、n 回入力ミスすると、n 分ロックアウト的な。
SecurityStamp? †
https://github.com/OpenTouryoProject/MultiPurposeAuthSite/blob/develop/root/programs/MultiPurposeAuthSite/MultiPurposeAuthSite/app.config#L155
Proxy †
https://github.com/OpenTouryoProject/MultiPurposeAuthSite/blob/develop/root/programs/MultiPurposeAuthSite/MultiPurposeAuthSite/app.config#L50
主に、開発時の利用を想定している。
Internet Proxy(インターネット・プロシキ) †
Intranet Proxy(イントラネット・プロシキ) †
Debug Proxy(デバッグ・プロキシ) †
ロックダウン †
編集画面 †
- AllowEditingUserName?
UserName?編集の表示/実行を許可するかどうか
- RequirePasswordInEditingUserNameAndEmail?
UserName?とEmail編集時にパスワードを要求するかどうか
- CanEditEmail?
E-mailアドレス編集の表示/実行の有効(true)/無効(false)
- CanEditPhone?
電話番号編集の表示/実行の有効(true)/無効(false)
- CanEdit2FA
2要素認証設定の表示/実行の有効(true)/無効(false)
- CanEditUnstructuredData?
非定型データ編集の表示/実行の有効(true)/無効(false)
- CanEditOAuth2Data
OAuth2データ編集の表示/実行の有効(true)/無効(false)
各種外部サービスの設定 †
外部ログイン †
https://github.com/OpenTouryoProject/MultiPurposeAuthSite/blob/develop/root/programs/MultiPurposeAuthSite/MultiPurposeAuthSite/app.config#L166
ON/OFFのスイッチとキーを設定する。
- 外部ログイン・サービスの管理画面
- client_id、client_secretを取得する。
- 合わせてここでRedirectエンドポイントの設定を行う必要がある。
Notification Provider †
https://github.com/OpenTouryoProject/MultiPurposeAuthSite/blob/develop/root/programs/MultiPurposeAuthSite/MultiPurposeAuthSite/app.config#L100
オンライン決済サービス †
https://github.com/OpenTouryoProject/MultiPurposeAuthSite/blob/develop/root/programs/MultiPurposeAuthSite/MultiPurposeAuthSite/app.config#L70
本番用のkeyを設定する。
OAuth2 †
EquipOAuthServer? †
https://github.com/OpenTouryoProject/MultiPurposeAuthSite/blob/develop/root/programs/MultiPurposeAuthSite/MultiPurposeAuthSite/app.config#L189
汎用認証サイト(IdP)にOAuth2のSTS機能を付加する(true)/しない(false)。
プロパティ †
https://github.com/OpenTouryoProject/MultiPurposeAuthSite/blob/develop/root/programs/MultiPurposeAuthSite/MultiPurposeAuthSite/app.config#L191
- AllowOAuthInsecureHttpEndpoints?
- HTTPを許可する(true)/しない(false)。
- なお、OAuth2は、HTTPSが推奨。
- OAuthAuthorizeEndpointCanDisplayErrors?
Authorize エンドポイントでエラーを表示する(true)/しない(false)。
- OAuthAccessTokenExpireTimeSpanFromMinutes?
Access Tokenの有効期間(分)
- OAuthRefreshTokenExpireTimeSpanFromDays?
Refresh Tokenの有効期間(日)
ServerUri? †
各種サーバのEndpointへのUriを設定する。
JWT設定 †
https://github.com/OpenTouryoProject/MultiPurposeAuthSite/blob/develop/root/programs/MultiPurposeAuthSite/MultiPurposeAuthSite/app.config#L197
- AccessToken?のフォーマットを
- JWT形式にするか(true)
- ASP.NET Identity形式にするか(false)
- JWT形式を選択する意味。
- ResourcesServer?はASP.NET Identityに依存しなくて良くなる。
- AccessToken?(JWT)をJWT検証できるため、
ClientはOAuth2の脆弱性を検知可能で、認証用途でより安全に使用可能。
- OAuthIssuerId?
iss claimに格納される、適切なIssuerId?(Uri形式)を設定する。
- X.509 証明書
必要に応じて、本番環境にふさわしいX.509証明書に変更する。
ロックダウン †
client_id、client_secret †
https://github.com/OpenTouryoProject/MultiPurposeAuthSite/blob/develop/root/programs/MultiPurposeAuthSite/MultiPurposeAuthSite/app.config#L242
- ここのclient_id、client_secretの乱数を、外部に漏洩していない値に更新する。
乱数は、CreateClientsIdentity?.exeツールを使用して生成することができる。
- なお、
- SelfClient?は、汎用認証サイトのOAuth2 AccessToken?取得機能で使用している設定である。
- TestClient?は、汎用認証サイトのOAuth2 テスト機能で使用している設定である。