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

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

*目次 [#i6d74b0f]
#contents

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

(5) では、汎用認証サイトを既存のユーザストアに接続し、~
IdP機能を提供せず、STS機能のみを提供する手順を説明する。

*コンフィギュレーション [#r3cd2510]
[[必要な機能をロックダウンさせて>汎用認証サイトのコンフィギュレーション#ja5926d6]]、STS専用モードで動作させる。

*動作確認 (1) [#z3b2d831]
ログインと、OAuth2、OIDCのID federation以外の~
機能(サインアップ、編集、管理)が動作しなくなっていることを確認する。

*コード修正 [#teb7e88d]
-下記部位を修正して、既存のユーザストアに接続する。
-以下のユーザストアについては必要になるので注意する。
-続いて、以下のコードを修正して、既存のユーザストアに接続する。

-以下のユーザストアについては引き続き必要になるので注意する。
--AuthenticationCodeDictionary
--RefreshTokenDictionary
--, etc.

**UserStoreクラス [#keaf791c]
https://github.com/OpenTouryoProject/MultiPurposeAuthSite/blob/develop/root/programs/MultiPurposeAuthSite/MultiPurposeAuthSite/Models/ASPNETIdentity/Entity/UserStore.cs

以下のメソッドを修正する。
以下のメソッドを修正し、~
既存のユーザストアからApplicationUser オブジェクトを作成するように変更する。

***FindByIdAsync [#k31dde37]
***FindByIdAsyncメソッド [#k31dde37]
https://github.com/OpenTouryoProject/MultiPurposeAuthSite/blob/develop/root/programs/CommonLibrary/Data/CmnUserStore.cs#L207

***FindByNameAsync [#ib0fb94c]
-userIdを使用して、ユーザストア内を検索し情報をロードする。

-ApplicationUserオブジェクトを生成し(以下は生成例)、
 user = await ApplicationUser.CreateBySignup(userName, true);

**CustomPasswordHasher [#n68dbe17]
https://github.com/OpenTouryoProject/MultiPurposeAuthSite/blob/develop/root/programs/MultiPurposeAuthSite/MultiPurposeAuthSite/Models/ASPNETIdentity/Manager/CustomPasswordHasher.cs
-以下のプロパティを設定する。
--user.Id
--user.PasswordHash

-ハッシュアルゴリズムを一致させる。
-ここでは、プレーン・パスワードとなる、V0HashAlgorithmを有効にする。
 //// $0$ バージョン
 //return this.V0HashAlgorithm(password);
***FindByNameAsyncメソッド [#ib0fb94c]
https://github.com/OpenTouryoProject/MultiPurposeAuthSite/blob/develop/root/programs/CommonLibrary/Data/CmnUserStore.cs#L313

*動作確認 [#z3b2d831]
ログインと、OAuth2、OIDCのID federation以外の~
機能が動作しなくなっていることを確認する。
-userNameを使用して、ユーザストア内を検索し情報をロードする。

-ApplicationUserオブジェクトを生成し(以下は生成例)、
 user = await ApplicationUser.CreateBySignup(userName, true);

-以下のプロパティを設定する。
--user.Id
--user.PasswordHash

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

***HashPasswordメソッド [#s46d74e9]
https://github.com/OpenTouryoProject/MultiPurposeAuthSite/blob/develop/root/programs/CommonLibrary/Password/CustomPasswordHasher.cs#L63

-必要に応じて、既存のユーザストアに保存されている~
パスワード・ハッシュとハッシュ・アルゴリズムを一致させる。

-基本的に、VNHashAlgorithmメソッドを新設して、~
HashPasswordメソッドから利用するようにする。

*動作確認 (2) [#oae535cb]
上記の修正が完了した後に、既存のユーザストアを使用したログインの動作確認を行う。

*補足 [#t9ac4f0d]

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

CreateByRegisterとCreateBySignupの違い。

***CreateByRegister [#l0441455]
-事前登録用
-ParentIdが必要

***CreateBySignup [#v76b64d0]
-サインアップ用
-ParentIdが不要
-emailConfirmedが必要

**LDAPのハッシュ・パスワードを取得する方法 [#f3dda38d]
LDAPのハッシュ・パスワードを取得することはできるか?

***OpenLDAPから [#x7d23e8b]
userPassword属性に保存されているので、ldapsearchコマンドを使用してこれを取得する。

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

-ActiveDirectoryからパスワードをどうしてもとりたい場合には - taguiの日々の妄想~
http://d.hatena.ne.jp/tagui99/20100927

***その他の方法 [#v2d13f1e]
パスワードに"LDAP:UserID"などと保存しておき、~
PasswordHasher ([[CustomPasswordHasher>https://github.com/OpenTouryoProject/MultiPurposeAuthSite/blob/develop/root/programs/CommonLibrary/Password/CustomPasswordHasher.cs]])内部で、LDAP認証するのも手。

-LDAP認証
--VBScript/ADSIでOpenLDAPの認証を受ける - ひらいて~
http://d.hatena.ne.jp/s0u/20060610/1149950451

--[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/


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