8.3. ユーザー管理のアクセス
Red Hat Single Sign-On の Authorization Services は、短期間 User-Managed Access または UMA をベースとしています。UMA は、以下の方法で OAuth2 機能を強化する仕様です。
プライバシー
今日、ユーザーのプライバシーは、より多くのデータやデバイスが利用でき、クラウドに接続しているため、ユーザーのプライバシーの懸念となります。UMA および Red Hat Single Sign-On を使用すると、リソースサーバーは、ユーザーが定義するポリシーに基づいてパーミッションが付与されているユーザーのプライバシーに基づいてリソースが保護されるように機能を強化できます。
サードパーティー間の認可
リソースの所有者 (通常のエンドユーザー) は、リソースへのアクセスを管理し、他のリソースにアクセスするために他のユーザーが (例: 通常のエンドユーザー) を認可できます。これは、ユーザーの代わりに動作しているクライアントアプリケーションに、UMA リソースの所有者が完全に非同期でアクセスすることが許可される OAuth2 とは異なります。
リソース共有
リソースの所有者はリソースに対するパーミッションを管理し、特定のリソースにアクセスできるユーザーや方法を決定できます。その後、Red Hat Single Sign-On は、リソースの所有者がリソースを管理できる共有サービスとして機能します。
Red Hat Single Sign-On は、UMA 2.0 準拠の認可サーバーで、ほとんどの UMA 機能を提供します。
たとえば、インターネット Banking Service(リソースサーバー) を使用したユーザー Alice(リソース所有者) を使用して履歴の Bank アカウント (リソース所有者) を管理することを検討してください。1 日の 1 日、Alice がバンクアカウントを Bob(リクエストパーティー) に開催することを決定し、アカウンティングのプロフェッショナルです。ただし、Bob は view(scope)Alice のアカウントにのみアクセスできる必要があります。
リソースサーバーとして、インターネット Banking サービスは Alice の Bank アカウントを保護することができる必要があります。このため、Red Hat Single Sign-On Resource Registration Endpoint に依存して、Alice の Bank アカウントを表すサーバーでリソースを作成します。
現在、Bob が Alice の Bank アカウントにアクセスしようとすると、アクセスは拒否されます。インターネットバランシングサービスは、銀行取引アカウントのデフォルトポリシーをいくつか定義します。その 1 つは、所有者 (この場合は Alice) のみが銀行取引アカウントにアクセスできます。
ただし、インターネットボーシングサービスは、Alice のプライバシーに伴い、銀行取引アカウントの特定のポリシーを変更することもできます。変更可能なこれらのポリシーの 1 つとして、銀行取引アカウントを閲覧できるユーザーを定義することです。このため、インターネット Banking サービスは Red Hat Single Sign-On を使用して Alice の領域を提供し、アナッシングが個人や操作 (またはデータ) にアクセスできる領域に提供します。いつでも、Alice は追加のパーミッションを Bob に付与するか、付与できます。
8.3.1. 認可プロセス リンクのコピーリンクがクリップボードにコピーされました!
UMA では、クライアントが UMA 保護リソースサーバーにアクセスしようとすると、認可プロセスが起動します。
UMA 保護リソースサーバーでは、トークンが RPT である要求内のベアラートークンが必要です。クライアントが RPT を使用せずにリソースサーバーでリソースを要求する場合:
クライアントで、RPT を送信せずに保護されているリソースを要求
curl -X GET \ http://${host}:${port}/my-resource-server/resource/1bfdfe78-a4e1-4c2d-b142-fc92b75b986f
curl -X GET \
http://${host}:${port}/my-resource-server/resource/1bfdfe78-a4e1-4c2d-b142-fc92b75b986f
リソースサーバーは、パーミッション チケット
と、Red Hat Single Sign-On サーバーの場所が指定された as_uri
パラメーターを使用して応答をクライアントに返信し、RPT を取得するためにチケットを送信します。
リソースサーバーはパーミッションチケットで応答
HTTP/1.1 401 Unauthorized WWW-Authenticate: UMA realm="${realm}", as_uri="https://${host}:${port}/auth/realms/${realm}", ticket="016f84e8-f9b9-11e0-bd6f-0021cc6004de"
HTTP/1.1 401 Unauthorized
WWW-Authenticate: UMA realm="${realm}",
as_uri="https://${host}:${port}/auth/realms/${realm}",
ticket="016f84e8-f9b9-11e0-bd6f-0021cc6004de"
パーミッションチケットは、Red Hat Single Sign-On Permission API が発行する特別なタイプのトークンです。これらは、要求されるパーミッション (リソースやスコープなど) や、要求に関連するその他の情報を表します。リソースサーバーのみがこれらのトークンを作成できます。
クライアントにはパーミッションチケットがあり、Red Hat Single Sign-On サーバーの場所もあるため、クライアントは検出ドキュメントを使用してトークンエンドポイントの場所を取得し、認可要求を送信できるようになりました。
クライアントは、認可要求をトークンエンドポイントに送信して RPT を取得
curl -X POST \ http://${host}:${port}/auth/realms/${realm}/protocol/openid-connect/token \ -H "Authorization: Bearer ${access_token}" \ --data "grant_type=urn:ietf:params:oauth:grant-type:uma-ticket" \ --data "ticket=${permission_ticket}
curl -X POST \
http://${host}:${port}/auth/realms/${realm}/protocol/openid-connect/token \
-H "Authorization: Bearer ${access_token}" \
--data "grant_type=urn:ietf:params:oauth:grant-type:uma-ticket" \
--data "ticket=${permission_ticket}
Red Hat Single Sign-On アセスメントプロセスでパーミッションの発行が行われると、パーミッションが関連付けられている RPT を発行します。
Red Hat Single Sign-On が RPT を使用してクライアントに応答
サーバーからの応答は、他の付与タイプを使用する場合にトークンエンドポイントからの他の応答と同様になります。RPT は access_token
応答パラメーターから取得できます。クライアントに権限を付与する権限がないと、Red Hat Single Sign-On は 403
HTTP ステータスコードで応答します。
Red Hat Single Sign-On は認可要求を拒否
8.3.2. パーミッション要求の送信 リンクのコピーリンクがクリップボードにコピーされました!
Red Hat Single Sign-On Token Endpoint の RPT を使用して交換するために、クライアントは最初に UMA で保護されているリソースサーバーからパーミッションチケットを取得する必要があります。
デフォルトでは、Red Hat Single Sign-On は 403
HTTP ステータスコードで応答し、クライアントが RPT で発行できない場合に request_denied
エラーを返します。
Red Hat Single Sign-On は認可要求を拒否
このような応答は、Red Hat Single Sign-On がパーミッションチケットで表されるパーミッションで RPT を発行できなかったことを意味します。
場合によっては、クライアントアプリケーションは非同期認可フローを開始し、アクセスを付与するべきかどうかを判断するリソースの所有者をリクエストする場合があります。そのため、クライアントは、トークンエンドポイントへの認可要求と共に submit_request
要求パラメーターを使用できます。
submit_request
パラメーターを使用すると、Red Hat Single Sign-On はアクセスが拒否された各リソースに対するパーミッション要求を永続化します。作成されると、リソースの所有者は、アカウントを確認し、パーミッション要求を管理できます。
この機能はアプリケーションの Request Access
ボタンと考えることができます。ここでは、他のユーザーにリソースへのアクセスを要求できます。
8.3.3. ユーザーリソースへのアクセス管理 リンクのコピーリンクがクリップボードにコピーされました!
Red Hat Single Sign-On のユーザーアカウントサービスを使用して、リソースへのアクセスを管理できます。この機能を有効にするには、最初にレルムのユーザー管理アクセスを有効にする必要があります。
手順
- 管理コンソールにログインします。
- メニューで Realm Settings をクリックします。
ユーザー管理アクセス を ON に切り替えます。
メニューオプションの My Resources をクリックします。以下のオプションを含むページが表示されます。
承認が必要な パーミッションリクエストの管理
このセクションでは、承認を待っているすべてのパーミッション要求の一覧を示します。これらの要求は、特定のリソースへのアクセスを要求するユーザー (ユーザー) に接続されます。ユーザーはこれらのリクエストを承認または拒否できます。
マイリソース の管理
このセクションには、ユーザーが所有するすべてのリソースの一覧が含まれます。ユーザーは、リソースをクリックして詳細情報を検索し、リソースを他のユーザーと共有できます。
共有されたリソース の管理
このセクションでは、ユーザーと共有する全リソースの一覧を示します。
承認待ちの要求 の管理
このセクションでは、別のユーザーまたはリソース所有者の承認を待っているユーザーが送信したパーミッション要求の一覧を示します。
特定のリソースをクリックして変更を行うと、以下のページが表示されます。
このページには以下のオプションが含まれます。
このリソースへのアクセス権限のあるユーザー の管理
本セクションでは、このリソースへのアクセスを持つユーザーの一覧を説明します。ユーザーは、
Revoke
ボタンをクリックするか、特定のPermission
を削除してアクセスを取り消すことができます。リソースを他のユーザーと共有する
別のユーザーのユーザー名またはメールアドレスを入力し、ユーザーはリソースを共有し、アクセスを付与するパーミッションを選択できます。