「.NET 開発基盤部会 Wiki」は、「Open棟梁Project」,「OSSコンソーシアム .NET開発基盤部会」によって運営されています。
目次 †
概要 †
マルチサイド・プラットフォームとして機能するであろう認証サイト、
汎用認証サイト(Multi-AuthSystem)のユースケースをいろいろと考えている。
認証サイト †
汎用認証サイト(Multi-AuthSystem)
- User・Client( = 認証サイトのクライアント)に、認証結果として、JWTアサーションを発行する。
- これにより、複数のUser・Clientを紐つけるマルチサイド・プラットフォームとして機能する。
IdP †
IdPはUser認証を行い、複数のUserを識別できる。
STS †
認証・認可 †
- また、OAuth2.0 などの STS をサポートすれば、
- User認証だけでなく(Authorization Codeグラント種別)、
- Client認証(Webサイトの認証)も可能(Client Credentialsグラント種別)
- 認証・認可の結果として、JWTアサーションをClient・UserAgent?に発行する。
- OAuth2.0で認証・認可云々の話はコチラを参考。
Claimの連携 †
処理に必要なClaim属性値をClient・UserAgent?に連携する。
User・Client †
User・Clientを特定するには、
- 認証サイト
- Client(Webサイト)
- UserAgent?(WWWブラウザなど)
間で、認証サイトがClient・UserAgent?に発行したJWTアサーションを交換し合う。
User †
Clientは、OAuth2.0などの認証連携プロトコルを使用して、
Userは、単一のIdPで認証され、STSからJWTアサーションを取得する。
Client †
Clientは、OAuth2.0のClient Credentialsグラント種別を使用して、STSからJWTアサーションを取得する。
マルチサイド・プラットフォーム †
認証サイトを使用して、User・Client、外部サービスを連携させる方法をいろいろと考える。
User・Client †
- JWTアサーションを交換し合うことで、認証サイト、Client、UserAgent?の間は身元を特定できる。
- 外部サービスとの連携については、
- 認証サイト(Resources Server)で集約するか、
- Client・UserAgent?から直接利用するかの二択になる。
外部サービス †
JWTアサーションを交換できない外部サービスが含まれてくると話は複雑になる。
通常の外部サービス †
- 認証サイト(Resources Server)で集約する
- 通常の外部サービスは、ClientのCredentialsが必要になる。
なので、認証サイトが、マルチサイド・プラットフォームとして機能する場合、
認証サイト経由で認証サイトのCredentialsを使用して外部サービスを使用する。
- このパターンは無駄に認証サイト経由を強いるためイイ方法ではない可能性があるが、
認証サイト側が価値提案する機能で外部サービスのAPIの粒度を上げることができれば意味がある。
- Client・UserAgent?から直接利用するシナリオ。
- Client・UserAgent?が外部サービスを直接利用する場合、外部サービスのTokenを連携する。
- これには、外部サービスが、Client IDやClient Secretを必要とせず、Tokenだけで使用できる必要がある。
- 以下は、外部サービス → 認証サイト → Client・UserAgent?と、Tokenを連携する方法。
- 外部サービスと連携し、認証サイトはTokenを取得する。
- Clientは、認証サイトと連携し、TokenをClaimとして要求・取得する。
外部サービス自体が、マルチサイド・プラットフォームである場合、 †
- なお、外部サービス自体が、マルチサイド・プラットフォーム(マルチサイド外部サービス)で、
認証したUser・Clientを接続する機能を持っている場合、このような集約は不要になるが、
- StripeのConnect機能で、Managed Accountを使用するケースでは、
この部分(認証と接続の機能)が外部にオフロードされている。
- この場合、このオフロード処理は、認証サイトが担うため、
認証サイト経由で、マルチサイド外部サービスを使用する必要がある。
- このように、マルチサイド外部サービスの(Managed) Account を管理することで、
複数のマルチサイド外部サービスを連携させるハブとして機能できる。
User・Client、外部サービスを連携させる †
- 認証サイトは、複数のClientの認証基盤として機能する。
- ClientはWebサービスを公開する。
- 公開したWebサービスは、使用したUser・Clientを適切に識別出来る。