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

目次

概要

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

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

コンフィギュレーション

必要な機能をロックダウンさせて、STS専用モードで動作させる。

動作確認 (1)

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

コード修正

  • 続いて、以下のコードを修正して、既存のユーザストアに接続する。
  • 以下のユーザストアについては引き続き必要になるので注意する。
    • AuthenticationCodeDictionary?
    • RefreshTokenDictionary?

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/MultiPurposeAuthSite/MultiPurposeAuthSite/Models/ASPNETIdentity/Entity/UserStore.cs#L484

  • userIdを使用して、ユーザストア内を検索し情報をロードする。
  • ApplicationUser?オブジェクトを生成し(以下は生成例)、
    user = await ApplicationUser.CreateBySignup(userName, true);
  • 以下のプロパティを設定する。
    • user.Id
    • user.PasswordHash?

FindByNameAsync?メソッド

https://github.com/OpenTouryoProject/MultiPurposeAuthSite/blob/develop/root/programs/MultiPurposeAuthSite/MultiPurposeAuthSite/Models/ASPNETIdentity/Entity/UserStore.cs#L584

  • userNameを使用して、ユーザストア内を検索し情報をロードする。
  • ApplicationUser?オブジェクトを生成し(以下は生成例)、
    user = await ApplicationUser.CreateBySignup(userName, true);
  • 以下のプロパティを設定する。
    • user.Id
    • user.PasswordHash?

CustomPasswordHasher?クラス

https://github.com/OpenTouryoProject/MultiPurposeAuthSite/blob/develop/root/programs/MultiPurposeAuthSite/MultiPurposeAuthSite/Models/ASPNETIdentity/Manager/CustomPasswordHasher.cs

HashPassword?メソッド

https://github.com/OpenTouryoProject/MultiPurposeAuthSite/blob/develop/root/programs/MultiPurposeAuthSite/MultiPurposeAuthSite/Models/ASPNETIdentity/Manager/CustomPasswordHasher.cs#L53

  • 必要に応じて、既存のユーザストアに保存されている
    パスワード・ハッシュとハッシュ・アルゴリズムを一致させる。
  • 基本的に、VNHashAlgorithm?メソッドを新設して、
    HashPassword?メソッドから利用するようにする。

動作確認 (2)

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

補足

ApplicationUser?クラス

https://github.com/OpenTouryoProject/MultiPurposeAuthSite/blob/develop/root/programs/MultiPurposeAuthSite/MultiPurposeAuthSite/Models/ASPNETIdentity/Entity/ApplicationUser.cs

CreateByRegister?CreateBySignup?の違い。

CreateByRegister?

  • 事前登録用
  • ParentId?が必要

CreateBySignup?

  • サインアップ用
  • ParentId?が不要
  • emailConfirmedが必要

LDAPのハッシュ・パスワードを取得する方法

LDAPのハッシュ・パスワードを取得することはできるか?

OpenLDAPから

userPassword属性に保存されているので、ldapsearchコマンドを使用してこれを取得する。

ActiveDirectory?から

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

その他の方法

パスワードに"LDAP:UserID"などと保存しておき、
PasswordHasher?CustomPasswordHasher)内部で、LDAP認証するのも手。


トップ   編集 凍結 差分 バックアップ 添付 複製 名前変更 リロード   新規 一覧 単語検索 最終更新   ヘルプ   最終更新のRSS
Last-modified: 2017-10-24 (火) 17:45:28 (665d)