onBehalfOfで許可された操作の使用
onBehalfOf許可操作は、アクセス権限を付与をユーザーの権限から生成できるようにして、クライアント・アプリケーションがそれ自体は通常はアクセス権限を持つ場合でも、そのユーザーがアクセス権を持つエンドポイントにアクセス可能にする方法を提供します。
認可されたクライアント・アプリケーションがアイデンティティ・ドメインのエンドポイントにアクセスするために必要な機能を実装する場合、クライアントには、それを行うために必要な権限が与えられます。一方、Webアプリケーション・クライアントは、ログインしたユーザーから取得した権限とスコープを使用して、クライアント・アプリケーションがエンドポイントにアクセスする必要がある機能を実装します。アイデンティティ・ドメインのデフォルトの認可動作では、そのクライアントは、ユーザーに与えられた権限に関係なく、それらのエンドポイントにアクセスするために必要な特権の完全なセットを引きまだ持っている必要があります。onBehalfOf実行可能操作は、管理者に、ユーザーのスコープ(ユーザーが存在する場合)とクライアントのスコープの共通部分ではなく、ユーザーの権限のみを使用する必要があることを示す方法を提供します。
パブリック・アプリケーションやCLIアプリケーションには非常に限定的な権限があり、エンドポイントにアクセスする権限はありません。これらのタイプのクライアントは、アプリケーションにアクセスしているユーザーに依存して、そのアプリケーションが持つ権限を決定します。ユーザーが公開アプリケーションにアクセスしているときに、そのユーザーにユーザーの権限だけで作成されたアクセス・トークンが発行された場合は、ユーザーが認可されているかぎり、そのユーザーはエンドポイントにアクセスできます。
onBehalfOf実行可能操作により、OAuthクライアント・アプリケーションなどのアクセス・トークンを生成できます。アイデンティティ・ドメイン固有のスコープ("urn:opc:idm:"で始まるスコープ)を計算してアクセス・トークンに設定すると、アイデンティティ・ドメインはクライアントの権限を無視して、認可ユーザーに当初付与されたスコープ以下の有効範囲を使用します。そのため、リクエストされたスコープに関連するユーザーの権限(管理ロール、グループなど)のみが、アクセスの特定に使用されます。リクエストされたスコープ"urn:opc:idm:_myscopes_"が使用された場合は、ユーザーに付与されたすべてのスコープが返されます。
onBehalfOf実行可能操作の有効化
アイデンティティ・ドメインREST APIを使用してOAuthアプリケーションを作成または更新し、許可された操作としてonBehalfOfUserを指定します。アイデンティティ・ドメインUIを使用してOAuthアプリケーションを作成する場合は、「Authorization」ページで、許可された「On behalf Of」操作のチェック・ボックスを選択します。ユーザーがアプリケーションにアクセスすると、ユーザーのアクセス権限に基づいて、様々な機能を実行できます。
例
この例では、アプリケーションを作成し、onBehalfOfUser実行可能操作(この例では太字で表示)を指定する方法を示します。
cat</tmp/OAuthClientApp.json << __EOF__
{
"schemas": [
"urn:ietf:params:scim:schemas:oracle:idcs:App"
],
"displayName": "publicClientApp",
"isOAuthClient": true,
"description": "public client",
"active": true,
"clientType": "public",
"basedOnTemplate": {
"value": "CustomBrowserMobileTemplateId"
},
"redirectUris": [
"http://example.com:9090/demoapp/return",
"http://example.com:9090/IDCSPlayground"
],
"logoutUri": "http://example.com:9090/demoapp/logout.jsp",
"postLogoutRedirectUris": ["http://example.com:9090/demoapp/logout.jsp"],
"allowedScopes": [
{
"fqs": "http://example.com/photos"
},
{
"fqs": "http://example.com/presentations"
},
{
"fqs": "http://example.com/documents"
}
],
"allowedOperations": [
"onBehalfOfUser" ],
"allowedGrants": [
"authorization_code",
"implicit"
]
}
__EOF__
curl -X POST
-H "Content-type: application/json"
-H "Authorization: Bearer <access token value>"
--data @/tmp/OAuthClientApp.json http://<domainURL>/admin/v1/Apps