「[[Open棟梁 wiki>https://opentouryo.osscons.jp]]」は、「[[Open棟梁Project>https://github.com/OpenTouryoProject/]]」,「[[OSSコンソーシアム .NET開発基盤部会>https://www.osscons.jp/dotNetDevelopmentInfrastructure/]]」によって運営されています。

-[[戻る>汎用認証サイトのファーストステップガイド]]
--[[汎用認証サイトのファーストステップガイド (1)]]
--[[汎用認証サイトのファーストステップガイド (2)]]
--[[汎用認証サイトのファーストステップガイド (3)]]
--[[汎用認証サイトのファーストステップガイド (4)]]
--汎用認証サイトのファーストステップガイド (5)
--[[ファーストステップ (1)>汎用認証サイトのファーストステップガイド (1)]]
--[[ファーストステップ (2)>汎用認証サイトのファーストステップガイド (2)]]
--[[ファーストステップ (3)>汎用認証サイトのファーストステップガイド (3)]]
--[[ファーストステップ (4)>汎用認証サイトのファーストステップガイド (4)]]
--ファーストステップ (5)
--[[ファーストステップ (6)>汎用認証サイトのファーストステップガイド (6)]]
--[[ファーストステップ (7)>汎用認証サイトのファーストステップガイド (7)]]

*目次 [#i6d74b0f]
#contents

*概要 [#i66a9a73]
[[汎用認証サイト(Multi-purpose Authentication Site)]]~
の導入前の評価を行うためのファーストステップガイド。

(5) では、「本番稼働前の最終チェック」を行う。
(5) では、汎用認証サイトを既存のユーザストアに接続し、~
IdP機能を提供せず、STS機能のみを提供する手順を説明する。

*[[web.config>https://github.com/OpenTouryoProject/MultiPurposeAuthSite/blob/develop/root/programs/MultiPurposeAuthSite/MultiPurposeAuthSite/Web.config]] [#g23e0f40]
*コンフィギュレーション [#r3cd2510]
[[必要な機能をロックダウンさせて>汎用認証サイトのコンフィギュレーション#ja5926d6]]、STS専用モードで動作させる。

**connectionStrings [#u7f06a71]
https://github.com/OpenTouryoProject/MultiPurposeAuthSite/blob/develop/root/programs/MultiPurposeAuthSite/MultiPurposeAuthSite/Web.config
*動作確認 (1) [#z3b2d831]
ログインと、OAuth2、OIDCのID federation以外の~
機能(サインアップ、編集、管理)が動作しなくなっていることを確認する。

接続文字列を確認する。
*コード修正 [#teb7e88d]
-続いて、以下のコードを修正して、既存のユーザストアに接続する。

**globalization [#b8d18ddb]
https://github.com/OpenTouryoProject/MultiPurposeAuthSite/blob/develop/root/programs/MultiPurposeAuthSite/MultiPurposeAuthSite/Web.config#L23
-以下のユーザストアについては引き続き必要になるので注意する。
--AuthenticationCodeDictionary
--RefreshTokenDictionary
--, etc.

カルチャ設定を確認する。
**UserStoreクラス [#keaf791c]
https://github.com/OpenTouryoProject/MultiPurposeAuthSite/blob/develop/root/programs/MultiPurposeAuthSite/MultiPurposeAuthSite/Models/ASPNETIdentity/Entity/UserStore.cs

**compilation debug [#j007dfef]
https://github.com/OpenTouryoProject/MultiPurposeAuthSite/blob/develop/root/programs/MultiPurposeAuthSite/MultiPurposeAuthSite/Web.config#L25
以下のメソッドを修正し、~
既存のユーザストアからApplicationUser オブジェクトを作成するように変更する。

デバッグ・モードを確認する。
***FindByIdAsyncメソッド [#k31dde37]
https://github.com/OpenTouryoProject/MultiPurposeAuthSite/blob/develop/root/programs/CommonLibrary/Data/CmnUserStore.cs#L207

**sessionState [#y12d93d5]
https://github.com/OpenTouryoProject/MultiPurposeAuthSite/blob/develop/root/programs/MultiPurposeAuthSite/MultiPurposeAuthSite/Web.config#L55
-userIdを使用して、ユーザストア内を検索し情報をロードする。

タイムアウト値や、クラスタリング対応など、Session設定を行う。
-ApplicationUserオブジェクトを生成し(以下は生成例)、
 user = await ApplicationUser.CreateBySignup(userName, true);

**customErrors [#d1295525]
https://github.com/OpenTouryoProject/MultiPurposeAuthSite/blob/develop/root/programs/MultiPurposeAuthSite/MultiPurposeAuthSite/Web.config#L101
-以下のプロパティを設定する。
--user.Id
--user.PasswordHash

エラーが画面の表示方法の変更。offはデバッグ時設定。
***FindByNameAsyncメソッド [#ib0fb94c]
https://github.com/OpenTouryoProject/MultiPurposeAuthSite/blob/develop/root/programs/CommonLibrary/Data/CmnUserStore.cs#L313

*[[app.config>https://github.com/OpenTouryoProject/MultiPurposeAuthSite/blob/develop/root/programs/MultiPurposeAuthSite/MultiPurposeAuthSite/app.config]] [#p2c64ac7]
-userNameを使用して、ユーザストア内を検索し情報をロードする。

**FxLog4NetConfFile [#m28e71b5]
https://github.com/OpenTouryoProject/MultiPurposeAuthSite/blob/develop/root/programs/MultiPurposeAuthSite/MultiPurposeAuthSite/app.config#L25
-ApplicationUserオブジェクトを生成し(以下は生成例)、
 user = await ApplicationUser.CreateBySignup(userName, true);

ログ出力設定を確認する。
-以下のプロパティを設定する。
--user.Id
--user.PasswordHash

**FxSessionTimeOutCheck [#o2910506]
https://github.com/OpenTouryoProject/MultiPurposeAuthSite/blob/develop/root/programs/MultiPurposeAuthSite/MultiPurposeAuthSite/app.config#L38
**CustomPasswordHasherクラス [#n68dbe17]
https://github.com/OpenTouryoProject/MultiPurposeAuthSite/blob/develop/root/programs/CommonLibrary/Password/CustomPasswordHasher.cs

-Sessionのタイムアウト検出機能のON/OFFを確認する。
-企業向けビジネス・アプリケーションではON推奨だが、汎用認証サイトはOFFでも良い。
***HashPasswordメソッド [#s46d74e9]
https://github.com/OpenTouryoProject/MultiPurposeAuthSite/blob/develop/root/programs/CommonLibrary/Password/CustomPasswordHasher.cs#L63

**IsDebug [#d4b96d35]
https://github.com/OpenTouryoProject/MultiPurposeAuthSite/blob/develop/root/programs/MultiPurposeAuthSite/MultiPurposeAuthSite/app.config#L85
-必要に応じて、既存のユーザストアに保存されている~
パスワード・ハッシュとハッシュ・アルゴリズムを一致させる。

デバッグモードをOFF(false)に変更する。
-基本的に、VNHashAlgorithmメソッドを新設して、~
HashPasswordメソッドから利用するようにする。

このフラグが影響を与える機能の一覧
*動作確認 (2) [#oae535cb]
上記の修正が完了した後に、既存のユーザストアを使用したログインの動作確認を行う。

-テスト・ユーザを登録する(true)/しない(false)。
-デバッグ・ログ出力(Debug.WriteLineへの併出(true)、log4net(false))
-通知の際、Debug.WriteLineへ出力(true)/Notification Providerへ出力(false)
-オンライン決済のテスト機能を表示する(false)/しない(true)。
*補足 [#t9ac4f0d]

**UserStoreType [#l061f297]
https://github.com/OpenTouryoProject/MultiPurposeAuthSite/blob/develop/root/programs/MultiPurposeAuthSite/MultiPurposeAuthSite/app.config#L88
**ApplicationUserクラス [#pe130485]
https://github.com/OpenTouryoProject/MultiPurposeAuthSite/blob/develop/root/programs/CommonLibrary/Entity/ApplicationUser.cs

-使用するユーザストアのストレージタイプを選択する。
-memの場合は、IsDebugがtrueの扱いになるので注意する。
CreateByRegisterとCreateBySignupの違い。

**Multi-tenant [#n2784f4d]
https://github.com/OpenTouryoProject/MultiPurposeAuthSite/blob/develop/root/programs/MultiPurposeAuthSite/MultiPurposeAuthSite/app.config#L91
***CreateByRegister [#l0441455]
-事前登録用
-ParentIdが必要

**AdministratorUID/PWD [#a85066bd]
https://github.com/OpenTouryoProject/MultiPurposeAuthSite/blob/develop/root/programs/MultiPurposeAuthSite/MultiPurposeAuthSite/app.config#L97
***CreateBySignup [#v76b64d0]
-サインアップ用
-ParentIdが不要
-emailConfirmedが必要

-システム管理者のアカウントを入力する。
-パスワード(AdministratorPWD)は稼働後(DB登録後)、削除して問題ない。
**LDAPのハッシュ・パスワードを取得する方法 [#f3dda38d]
LDAPのハッシュ・パスワードを取得することはできるか?

**サインアップ、サインイン・サインアウト [#qcc36a50]
***ユーザ名 [#w99b67e9]
https://github.com/OpenTouryoProject/MultiPurposeAuthSite/blob/develop/root/programs/MultiPurposeAuthSite/MultiPurposeAuthSite/app.config#L118
***OpenLDAPから [#x7d23e8b]
userPassword属性に保存されているので、ldapsearchコマンドを使用してこれを取得する。

-AllowOnlyAlphanumericUserNames~
UserNameがalphabetと数字のみかどうか。
-RequireUniqueEmail~
UserNameがEmailかどうか。
***ActiveDirectoryから [#i2b83ff9]
ActiveDirectoryでは、通常、ハッシュ・パスワードを取得できないので、~
sha1hexfltrと言うツールを使用して取り出すことができる模様。

***パスワード [#k688188c]
https://github.com/OpenTouryoProject/MultiPurposeAuthSite/blob/develop/root/programs/MultiPurposeAuthSite/MultiPurposeAuthSite/app.config#L131
-ActiveDirectoryからパスワードをどうしてもとりたい場合には - taguiの日々の妄想~
http://d.hatena.ne.jp/tagui99/20100927

-RequiredLength~
必要な文字列長(最小の文字列長)
-RequireNonLetterOrDigit~
英数以外の文字を必要とするかしないか。
-RequireDigit~
数字を必要とするかしないか。
-RequireLowercase~
小文字を必要とするかしないか。
-RequireUppercase~
大文字を必要とするかしないか。
***その他の方法 [#v2d13f1e]
パスワードに"LDAP:UserID"などと保存しておき、~
PasswordHasher ([[CustomPasswordHasher>https://github.com/OpenTouryoProject/MultiPurposeAuthSite/blob/develop/root/programs/CommonLibrary/Password/CustomPasswordHasher.cs]])内部で、LDAP認証するのも手。

***サインアップ [#t509df21]
https://github.com/OpenTouryoProject/MultiPurposeAuthSite/blob/develop/root/programs/MultiPurposeAuthSite/MultiPurposeAuthSite/app.config#L123
-LDAP認証
--VBScript/ADSIでOpenLDAPの認証を受ける - ひらいて~
http://d.hatena.ne.jp/s0u/20060610/1149950451

-DisplayAgreementScreen~
約款画面を表示するかどうか。
-EmailConfirmationTokenLifespanFromHours~
メアド検証リンクの有効期限(時間)
--[ADSIプログラミング] VBScript でユーザ認証してみよう (OpenDsobject) 
---1
https://blogs.technet.microsoft.com/jpilmblg/2009/05/20/adsi-vbscript-opendsobject-1/
---2
https://blogs.technet.microsoft.com/jpilmblg/2009/05/28/adsi-vbscript-opendsobject-2/

***ロックアウト [#h22cd4d3]
https://github.com/OpenTouryoProject/MultiPurposeAuthSite/blob/develop/root/programs/MultiPurposeAuthSite/MultiPurposeAuthSite/app.config#L138

**Proxy [#u184d268]
https://github.com/OpenTouryoProject/MultiPurposeAuthSite/blob/develop/root/programs/MultiPurposeAuthSite/MultiPurposeAuthSite/app.config#L50

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

***InternetProxy(インターネット・プロシキ) [#c9349f28]

***IntranetProxy(イントラネット・プロシキ) [#t472b89d]

***DebugProxy(デバッグ・プロキシ) [#jf26d061]


**ロックダウン [#ba88a223]
***編集画面 [#e0c9ab81]
-UserName~
https://github.com/OpenTouryoProject/MultiPurposeAuthSite/blob/develop/root/programs/MultiPurposeAuthSite/MultiPurposeAuthSite/app.config#L126

--AllowEditingUserName~
UserNameの編集を許可するかどうか

--RequirePasswordInEditingUserNameAndEmail~
UserNameとEmail編集時にパスワードを要求するかどうか

-その他~
https://github.com/OpenTouryoProject/MultiPurposeAuthSite/blob/develop/root/programs/MultiPurposeAuthSite/MultiPurposeAuthSite/app.config#L157

--CanEditEmail~
E-mailアドレス編集の有効(true)/無効(false)

--CanEditPhone~
電話番号編集の有効(true)/無効(false)

--CanEdit2FA~
2要素認証設定の有効(true)/無効(false)

--CanEditUnstructuredData~
非定型データ編集の有効(true)/無効(false)

--CanEditOAuth2Data~
OAuth2データ編集の有効(true)/無効(false)

**各種外部サービスの設定 [#v7103540]

***外部ログイン [#lb55c171]
https://github.com/OpenTouryoProject/MultiPurposeAuthSite/blob/develop/root/programs/MultiPurposeAuthSite/MultiPurposeAuthSite/app.config#L166

ON/OFFとキー設定。

***Notification Provider [#ic78474e]
https://github.com/OpenTouryoProject/MultiPurposeAuthSite/blob/develop/root/programs/MultiPurposeAuthSite/MultiPurposeAuthSite/app.config#L100

-SMTPの設定
-SMS (Twilio)の設定

***文面ファイル [#udd7f285]
https://github.com/OpenTouryoProject/MultiPurposeAuthSite/blob/develop/root/programs/MultiPurposeAuthSite/MultiPurposeAuthSite/app.config#L113

文面ファイルの内容を確認する。

***オンライン決済サービス [#uc548d7f]
https://github.com/OpenTouryoProject/MultiPurposeAuthSite/blob/develop/root/programs/MultiPurposeAuthSite/MultiPurposeAuthSite/app.config#L70

本番用のkeyを設定する。

**OAuth2 [#c30460a9]

***EquipOAuthServer [#h5b16db8]
https://github.com/OpenTouryoProject/MultiPurposeAuthSite/blob/develop/root/programs/MultiPurposeAuthSite/MultiPurposeAuthSite/app.config#L189

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

***プロパティ [#v4cccadb]
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 [#md4c4b36]
各種サーバのEndpointへのUriを設定する。

-Authorization Server~
https://github.com/OpenTouryoProject/MultiPurposeAuthSite/blob/develop/root/programs/MultiPurposeAuthSite/MultiPurposeAuthSite/app.config#L211

-Resource Server~
https://github.com/OpenTouryoProject/MultiPurposeAuthSite/blob/develop/root/programs/MultiPurposeAuthSite/MultiPurposeAuthSite/app.config#L223

-Client~
https://github.com/OpenTouryoProject/MultiPurposeAuthSite/blob/develop/root/programs/MultiPurposeAuthSite/MultiPurposeAuthSite/app.config#229

***JWT設定 [#wdcfd792]
https://github.com/OpenTouryoProject/MultiPurposeAuthSite/blob/develop/root/programs/MultiPurposeAuthSite/MultiPurposeAuthSite/app.config#L197

-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証明書に変更する。

***ロックダウン [#y16812f7]
-Grant Type~
https://github.com/OpenTouryoProject/MultiPurposeAuthSite/blob/develop/root/programs/MultiPurposeAuthSite/MultiPurposeAuthSite/app.config#L205

--Resource Owner Credentials Grant Typeの有効(true)/無効(false)
--Client Credentials Grant Typeの有効(true)/無効(false)

-OAuth2テスト用のRedirectエンドポイント~
https://github.com/OpenTouryoProject/MultiPurposeAuthSite/blob/develop/root/programs/MultiPurposeAuthSite/MultiPurposeAuthSite/app.config#L233

***client_id、client_secret [#xd54c828]
https://github.com/OpenTouryoProject/MultiPurposeAuthSite/blob/develop/root/programs/MultiPurposeAuthSite/MultiPurposeAuthSite/app.config#L242

client登録のclient_id、client_secretを、必ず、外部に漏洩していない値に更新する。


トップ   新規 一覧 単語検索 最終更新   ヘルプ   最終更新のRSS