Open棟梁 wiki」は、「Open棟梁Project」,「OSSコンソーシアム .NET開発基盤部会」によって運営されています。

目次

概要

  • 汎用認証サイトのコンフィギュレーションを纏めた。
  • 本番稼働前にどのあたりに注意が必要か?などについても記載した。

web.config

connectionStrings

https://github.com/OpenTouryoProject/MultiPurposeAuthSite/blob/develop/root/programs/MultiPurposeAuthSite/MultiPurposeAuthSite/Web.config#L14

接続文字列を設定する。

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はデバッグ時設定。

app.config

実行基盤系

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)。

動作モード

RequireUniqueEmail?

https://github.com/OpenTouryoProject/MultiPurposeAuthSite/blob/develop/root/programs/MultiPurposeAuthSite/MultiPurposeAuthSite/app.config#L120

UserName?がEmailかどうか。

  • 主に、
    • E-mailアドレスの確認(E-mail confirmation)の有無
      • サインアップ
      • UserName?変更
    • 外部ログイン

の動作に影響。

  • 動作が大きく異なるので初期から適切な方を選択してテストする。

文面ファイル(国際化対応済)

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#L156

  • SecurityStampのチェック間隔
  • DBアクセスが増えるので、本番環境では、少々、長めに設定すると良い。

Proxy

https://github.com/OpenTouryoProject/MultiPurposeAuthSite/blob/develop/root/programs/MultiPurposeAuthSite/MultiPurposeAuthSite/app.config#L50

主に、開発時の利用を想定している。

インターネット・プロシキ

イントラネット・プロシキ

デバッグ・プロキシ

ロックダウン

編集画面

  • AllowEditingUserName?
    UserName?編集の表示/実行を許可するかどうか
  • RequirePasswordInEditingUserNameAndEmail?
    UserName?とEmail編集時にパスワードを要求するかどうか
  • CanEditEmail?
    E-mailアドレス編集の表示/実行の、有効(true)/無効(false)
  • CanEditPhone?
    電話番号編集の表示/実行の、有効(true)/無効(false)
  • CanEdit2FA
    2要素認証設定の表示/実行の、有効(true)/無効(false)
  • CanEditUnstructuredData?
    非定型データ編集の表示/実行の、有効(true)/無効(false)
  • CanEditOAuth2Data
    OAuth2データ編集の表示/実行の、有効(true)/無効(false)

OAuth2関連

STS専用モード関連

各種外部サービスの設定

外部ログイン

https://github.com/OpenTouryoProject/MultiPurposeAuthSite/blob/develop/root/programs/MultiPurposeAuthSite/MultiPurposeAuthSite/app.config#L167

ON/OFFのスイッチとキーを設定する。

  • 外部ログイン・サービスの管理画面
    • client_id、client_secretを取得する。
    • 合わせてここでRedirectエンドポイントの設定を行う必要がある。
      • これは、外部ログインライブラリ毎に設定方法が異なるので注意する。
      • 例えばMicrosoftアカウント + Microsoft.Owin.Security.MicrosoftAccount?の場合、以下の設定を行う。
        https://fqdnname:nnnnn/signin-microsoft
    • 詳しくは、コチラを参照ください。

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

有効化/無効化

汎用認証サイト(IdP)にOAuth2のSTS機能を付加する(true)/しない(false)。

主要プロパティ

https://github.com/OpenTouryoProject/MultiPurposeAuthSite/blob/develop/root/programs/MultiPurposeAuthSite/MultiPurposeAuthSite/app.config#L199

  • AllowOAuthInsecureHttpEndpoints?
    • HTTPを許可する(true)/しない(false)。
    • なお、OAuth2は、HTTPSが推奨。
  • OAuthAuthorizeEndpointCanDisplayErrors?
    Authorize エンドポイントでエラーを表示する(true)/しない(false)。
  • OAuthAccessTokenExpireTimeSpanFromMinutes?
    Access Tokenの有効期間(分)
  • OAuthRefreshTokenExpireTimeSpanFromDays?
    Refresh Tokenの有効期間(日)

ServerUri?(Endpoint)

各種サーバのEndpointへのUriを設定する。

JWT設定

https://github.com/OpenTouryoProject/MultiPurposeAuthSite/blob/develop/root/programs/MultiPurposeAuthSite/MultiPurposeAuthSite/app.config#L204

  • EnableCustomTokenFormat?
  • 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#L249

  • ここのclient_id、client_secretの乱数を、外部に漏洩していない値に更新する。
    乱数は、CreateClientsIdentity?.exeツールを使用して生成することができる。
  • なお、
    • SelfClient?は、汎用認証サイトのOAuth2 AccessToken?取得機能で使用している設定である。
    • TestClient?は、汎用認証サイトのOAuth2 テスト機能で使用している設定である。

STS専用モード

STS専用モードで動作させるには、以下の3つの機能を全てロックダウンする。

https://github.com/OpenTouryoProject/MultiPurposeAuthSite/blob/develop/root/programs/MultiPurposeAuthSite/MultiPurposeAuthSite/app.config#L306

サインアップ

サインアップ処理をロックダウンする。

ユーザ属性編集

ユーザ属性編集処理をロックダウンする。

ユーザ・ロール管理

ユーザ・ロール管理処理をロックダウンする。


トップ   編集 凍結 差分 バックアップ 添付 複製 名前変更 リロード   新規 一覧 単語検索 最終更新   ヘルプ   最終更新のRSS
Last-modified: 2019-03-19 (火) 16:52:38 (261d)