LoginSignup
2
0

More than 3 years have passed since last update.

OpenID Connect, OAuth2.0のエンドポイントをポリシーによって保護する話

Posted at

本稿では、OpenID Connect/OAuth2.0のエンドポイントへのアクセスをポリシーに基づいて制御する機能について説明します。これはコンソーシアム版OpenAM 14に含まれることになった新規機能です。既にSAML2.0のケースについては、SAML2.0のエンドポイントをポリシーによって保護する話で説明しました。目的や機能はかなり重複しているため、ここではOpenID Connect/OAuth2.0に特徴的な部分について説明します。

認証の方式、強度の指定方法

SAML2.0と同様にOpenID Connect/OAuth2.0でもACR(認証コンテキスト・クラス・レファレンス)を使用して認証の方式や強度をリクエスト時に指定することが可能です。詳細については、この記事がお勧めです。この仕様は、OpenAMを含む多くの処理系で実装されてはいるのですが、あまり効果的に利用されては言えません。そこで、IdP/認可サーバ側に予め一定の条件(ポリシー)を設定しておき、その条件が満たされたときにのみトークンを発行するという新たな機能をコンソーシアム版 OpenAM 14 に追加しました。

ポリシーの設定単位

SAML2.0の場合は、IdPとSPのEntity IDのペアに対してポリシーを定義しましたが、OpenID Connect/OAuth2.0の場合は、クライアントに対して定義を行います。クライアント毎に細かく条件を指定し、その条件が満たされたときにのみトークンが発行されるようにすることが可能です。

設定方法

設定方法について説明します。

機能の有効化

本機能はディフォルトでは無効になっています。有効にするために以下の手順を行ってください。

  1. 管理コンソールを開き エージェント > OAuth2.0 クライアント に移動し、対象となるクライアント名(ここでは"testClient")をクリックします
  2. ページの末尾までスクロールし、「ポリシーに基づくエンドポイントの保護」を有効にします client.png 表示されるページを下の方にスクロールします。 enable1.png

ポリシーの定義

次にポリシーの定義方法について説明します。リソースタイプ、ポリシーセット、ポリシーの順に登録していきます。

リソースタイプの登録

以下の項目を登録します

  • 名前 : 任意の名前(ここでは"OAuth2Client"と指定)
  • パターン : client_id=*
  • アクション : IssueAssertion: 許可/拒否 (デフォルト値なのであとから変更可能です) newResourceType.png

ポリシーセットの登録

「新規プロバイダポリシーセット」ボタンを押下します
policySet.png

以下の項目を設定します:

  • Id:OAuthClientService
  • 名前:任意の名前
  • リソースタイプ: 上で登録したリソースタイプの名前(ここでは"OAuth2Client")

newPolicySet.png

ポリシーの登録

以下の項目を設定します:

  • 名前:任意の名前
  • リソースタイプ:上で登録したリソースタイプの名前(ここでは"OAuth2Client")
  • リソース:対象となるクライアントのclient_idを設定

その他は通常のURLポリシーと同じです。
newPolicy.png

acr_valuesとの関係

arc_valuesの指定がある場合にはそれを無視することはありません。認証コンテキスト・クラスの条件が満たされた上でポリシーが満たされているかのチェックが行われます。

2
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
0