「Open棟梁 wiki」は、「Open棟梁Project」,「OSSコンソーシアム .NET開発基盤部会」によって運営されています。
目次 †
概要 †
汎用認証サイト(Multi-purpose Authentication Site)
の導入前の評価を行うためのファーストステップガイド。
(5) では、汎用認証サイトを既存のユーザストアに接続し、
IdP機能を提供せず、STS機能のみを提供する手順を説明する。
コンフィギュレーション †
必要な機能をロックダウンさせて、STS専用モードで動作させる。
動作確認 (1) †
ログインと、OAuth2、OIDCのID federation以外の
機能(サインアップ、編集、管理)が動作しなくなっていることを確認する。
コード修正 †
- 続いて、以下のコードを修正して、既存のユーザストアに接続する。
- 以下のユーザストアについては引き続き必要になるので注意する。
- AuthenticationCodeDictionary?
- RefreshTokenDictionary?
- , etc.
UserStore?クラス †
https://github.com/OpenTouryoProject/MultiPurposeAuthSite/blob/develop/root/programs/MultiPurposeAuthSite/MultiPurposeAuthSite/Models/ASPNETIdentity/Entity/UserStore.cs
以下のメソッドを修正し、
既存のユーザストアからApplicationUser? オブジェクトを作成するように変更する。
FindByIdAsync?メソッド †
https://github.com/OpenTouryoProject/MultiPurposeAuthSite/blob/develop/root/programs/CommonLibrary/Data/CmnUserStore.cs#L207
- userIdを使用して、ユーザストア内を検索し情報をロードする。
- 以下のプロパティを設定する。
- user.Id
- user.PasswordHash?
FindByNameAsync?メソッド †
https://github.com/OpenTouryoProject/MultiPurposeAuthSite/blob/develop/root/programs/CommonLibrary/Data/CmnUserStore.cs#L313
- userNameを使用して、ユーザストア内を検索し情報をロードする。
- 以下のプロパティを設定する。
- user.Id
- user.PasswordHash?
CustomPasswordHasher?クラス †
https://github.com/OpenTouryoProject/MultiPurposeAuthSite/blob/develop/root/programs/CommonLibrary/Password/CustomPasswordHasher.cs
HashPassword?メソッド †
https://github.com/OpenTouryoProject/MultiPurposeAuthSite/blob/develop/root/programs/CommonLibrary/Password/CustomPasswordHasher.cs#L63
- 必要に応じて、既存のユーザストアに保存されている
パスワード・ハッシュとハッシュ・アルゴリズムを一致させる。
- 基本的に、VNHashAlgorithm?メソッドを新設して、
HashPassword?メソッドから利用するようにする。
動作確認 (2) †
上記の修正が完了した後に、既存のユーザストアを使用したログインの動作確認を行う。
補足 †
ApplicationUser?クラス †
https://github.com/OpenTouryoProject/MultiPurposeAuthSite/blob/develop/root/programs/CommonLibrary/Entity/ApplicationUser.cs
CreateByRegister?とCreateBySignup?の違い。
CreateByRegister? †
CreateBySignup? †
- サインアップ用
- ParentId?が不要
- emailConfirmedが必要
LDAPのハッシュ・パスワードを取得する方法 †
LDAPのハッシュ・パスワードを取得することはできるか?
OpenLDAPから †
userPassword属性に保存されているので、ldapsearchコマンドを使用してこれを取得する。
ActiveDirectory?から †
ActiveDirectory?では、通常、ハッシュ・パスワードを取得できないので、
sha1hexfltrと言うツールを使用して取り出すことができる模様。
その他の方法 †
パスワードに"LDAP:UserID"などと保存しておき、
PasswordHasher? (CustomPasswordHasher)内部で、LDAP認証するのも手。
- [ADSIプログラミング] VBScript でユーザ認証してみよう (OpenDsobject?)