Open棟梁Project - マイクロソフト系技術情報 Wiki

目次

概要

特徴

モジュラーデザイン

ユースケースに対応するため、

多様な環境をサポートできる。

OAuth 2.0に認証拡張

OAuth 2.0との違いは、認証拡張機能が実装された点にある。

仕様一覧

OAuth 2.0に認証結果とプロフィールの受渡し機能を追加

OAuth 2.0に認証結果とプロフィールの受渡し機能のみを追加した仕様

OpenID Connectのコアな機能(難しいことも可能に)

リクエスト内の細かいクレーム指定や認証コンテキストの指定

関連仕様

3つの認証のシーケンス

Authorization Code Flow

以下で説明しているシーケンス

Implicit Flow

以下で説明しているシーケンス

Hybrid Flow

Authorization Code FlowにToken Requestを追加して、より完全なtokenを取得する。

IDトークン(クレーム)

概要

ID トークンは JWT の一種

メッセージ形式にJSONを採用

JWT : JSON Web Tokenの略

クレーム暗号化

JWTのJWS or JWEを使用する。

クレームセット

認証に関するクレーム群

その他のクレーム群

外部クレーム

Idp(OP)は、扱うクレームの内容によって、

どちらを利用すべきかを判断する必要がある。

集約クレーム

一定期間変更されないことが保証されており
キャッシュの効果があるものは集約クレーム。

分散クレーム

クレームそのものではなく、問い合わせ先のURLを扱う。

をレスポンスに含む。

頻繁に更新されるものは分散クレーム。

参考

OpenID Connectのシーケンス

STEP 0 は事前準備なので、STEP 1 からが実際の認証・認可のシーケンス。

Webアプリ(Basic Client Profile)

STEP 0 : 事前準備(Idp(OP)にRPを登録)

Idp(OP)にRPを登録し、

を入手する。

STEP 1 : Authorization codeの取得

RPがIdp(OP)からAuthorization codeを取得。

STEP 2 : Access Token、ID Tokenの取得

STEP 3 : IDトークンの正当性の検証

"access_token"の

STEP 4 : 属性情報の取得

モバイルアプリ(Implicit Client Profile)

STEP 1以降の違いは、仲介コードが無く直接、Access Tokenやid_tokenが返る点。

STEP 0 : Discovery & Dynamic Client Registration

IdP(OP)探索と動的なRP登録

結果的に、OPからRP識別のための“cient_id”がレスポンスされる。

STEP 1 : Authorization Request

認可リクエスト

STEP 2 : Authorization Response

認可応答

STEP 3 : ID Token Verification

IDトークンの検証

STEP 4 : Accessing to UserInfo? Endpoint

UserInfo?エンドポイントへのアクセス

参考

OpenID Foundation

IdM実験室

WIF

WIF Extension for OAuthは古い?

OWIN

Microsoft.Owin.Security.OpenIdConnect?

ADFS

Tsmatz

内容を確認すると、

双方に対応した v2.0 endpoint (App Model v2) と連携し、
OAuth 2.0(ではなく、OpenID Connect)認証をおこない、
認証結果を他の API (Service) で検証し認証させている。

サンプルを実行する方法

Microsoft.Owin.Security.OpenIdConnect?

https://github.com/OpenTouryoProject/SampleProgram/tree/master/ASPNET/OpenID_Connect/

サンプル・アプリケーションをAzure Active Directoryに登録

  1. Azureの管理ポータルにサインイン。
  2. Azure Active Directoryのタブを開く。
  3. サンプル・アプリケーションを登録するテナント(ドメイン)を開く。
  4. [Applications]タブに移動し、ページの下部の[Add]アイコンををクリック。
  5. [What do you want to do?]画面で[Add an application my organization is developing]を選択。
  6. [Tell us about your application]画面が表示される。
    1. アプリケーションの名前を入力(例:OpenIDConnect_sample)。
    2. [Web Application and / or Web API]を選択する。
    3. [Next]をクリックする。
  7. [App properties]画面が表示される。
    1. サンプルのサインオンURLを入力(例:https://localhost:xxxxxx/
      サンプル・プロジェクトのプロパティにある開発サーバのSSL URLプロパティを指定
      http://www.codeproject.com/Tips/766918/Visual-Studio-Use-HTTPS-SSL-On-Web-Application-Pro
    2. アプリのID URIを入力(例:https://<your_tenant_name>/OpenIDConnect_sample)
      '<your_tenant_name>はAzure ADのテナント(ドメイン)名。
    3. [Complete]をクリック。

サンプル・アプリケーションの構成

  1. web.configファイルを開く。
  2. FxTenant?にAzure ADのテナント(ドメイン)名を指定(例:xxxxx.onmicrosoft.com)
  3. FxClientId? にAzureのポータルから入手することができるClient IDを指定
    1. クライアントIDを取得するには、
    2. Azureの管理ポータルにサインイン。
    3. Azure Active Directoryのタブを開く。
    4. サンプル・アプリケーションを登録したテナント(ドメイン)を開く。
    5. [Applications]タブに移動しサンプル・アプリケーションを選択。
    6. アプリケーション画面で[ACCESS WEB APIS IN OTHER APPLICATIONS]を選択。
    7. Client IDをコピー。
  4. FxPostLogoutRedirectUri?にサンプルのサインオンURLを入力(例:https://localhost:xxxxxx/

サンプル・アプリケーションの構成

F5実行でリダイレクトされた先のAzure AD(STS)で認証できることを確認する。


Tags: :認証基盤, :クレームベース認証


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