●Tomcatアダプター(keycloak.json)の設定このkeycloak.jsonで、Tomcatアダプターについての設定を行います。主な設定としては、第8回と同様、認可サーバのURLやレルム名、クライアント名、クライアントシークレットの設定などが含まれます(表9)。上記に加え、今回のUMA方式の検証では、操作(スコープ)によるアクセス制御も利用するため、policy-enforcerに特徴的な設定をする必要があります。表10の「paths」の設定において、HTTPメソッドとスコープとの関連付けの設定が必要です。当該パスに該当するGETメソッドのリクエストを行った場合、「item:view」というスコープが要求されるという意味になります。「paths」で定義した以外のパスに対してのアクセスが拒否されないように、「enforcement-mode」は「PERMISSIVE」に設定しておく必要があります。RPTなしでリソースにアクセスした際にUMAの仕様に準じた、パーミッションチケットを受け取るために、「user-managed-access」という設定が重要になります。pathsに該当しないアクセスがあった場合は、そのアクセスは拒否される。pathsに該当しないアクセスがあった場合は、そのアクセスは許可される。ポリシー評価を実施せず、全てのアクセスを許可user-managed-accessアダプターがUMAプロトコルを使用することの指定。policy-enforcerにはここで指定したもの以外にもさまざまなオプションがあります。詳しくは、こちらのページをご参照ください。API」を利用して、リソースサーバから認可サーバ(Keycloak)に対して、リソース情報の登録/削除を行う必要があります。リソース情報とは、Keycloakで認可制御が必要なリソースのURIや利用可能スコープ、リソースオーナーIDなどを含んだ管理オブジェクトです。このAPIの呼び出しでは、リソースの実体を作成するとともに、Keycloakにログインユーザー用のリソース情報を登録しています。APIを経由して、Keycloak上にリソース情報が登録されます。Keycloakにリソース情報が登録されると、他者との共有やパーミッションの申請の許可/拒否などが実施できるようになります。実装のポイントは、以下のリスト内(1)〜(4)の部分です。Response.status(Response.Status.CREATED).entity(item).build();}▲参照:Item.javaのcreateResourceメソッド(1)リソースに対して行える全ての操作(スコープ)をHashSetに追加します。ここでは、「item:view」「item:update」「item:delete」の3種類を追加しています。(2)Keycloakに登録するResourceRepresentationインスタンスを生成します。コンストラクタには、リソース名、スコープのマップ、uri、リソースタイプを指定します。Permission」と関連付けが行われます。UMA方式の場合は、setOwnerメソッドでオーナーのIDを設定してsetOwnerManagedAccessメソッドでtrueを設定し、このリソースでUMAを有効にする必要があります。APIを使ってチェックします。APIから、リソース情報登録用のAPIを呼び出します。/authz-uma-api/api/items/{ID})の解説このAPIの呼び出しでは、リソースの実体を削除するとともに、Keycloak上の該当リソース情報の登録を削除しています。Keycloakからリソース情報が削除されると、それまでの共有設定や申請も全て削除されます。実装のポイントは、以下のリスト内(1)〜(3)の部分です。API経由で、削除対象のリソース情報を検索します。(2)既に削除されている場合は、処理を終了します。API経由で、リソース情報削除用のAPIを呼び出します。削除の場合は、リソース情報のIDを引数に渡すだけです。APIの利用方法については、こちらのページも併せてご参照ください。まとめ以上、第8回と第9回を通して、Keycloakで認可サービスを利用する方法が一通り理解できたでしょうか。UMA方式に関しては、Keycloakやクライアントアダプターの設定に加え、アプリケーション側への実装が必要となるため、既成のアプリケーションに組み込むのは、ハードルが高いかもしれません。これから新規作成するアプリケーションでUMA仕様に適する要件があれば、ぜひ、UMA方式の採用を検討してみてください。sharing)の動作は確認しませんでした。Keycloakの「マイリソース」の画面では、共有対象として組織やロールを選択する画面がないので、現状は画面からの実施は不可能ですが、UMAのパーミッション変更APIなどを駆使することで実現できるはずです。興味のある方はぜひ取り組んでみてください(UMAの理解が深まると思います)。全9回にわたり、『Keycloak超入門』にお付き合いいただきありがとうございました。所々、「これが超入門?」と思われる部分もあったかもしれませんが、Keycloakがシンプルかつ強力に認証/認可機能を実現できるオープンソースであることをご紹介できたのではないかと思います。「専門性が高い」「ハードルが高い」といった従来のシングルサインオンに対する印象をお持ちの方が、本連載を読んで少しでも身近に感じていただければ幸いです。本連載は、前半を日立製作所、後半を野村総合研究所で担当させていただきました。これからも、Keycloakの活用を推進すべく、執筆活動やコミュニティー活動を進めていく予定です。今後ともよろしくお願いいたします。ひろゆき)野村総合研究所のオープンソースサポートサービス「OpenStandia」で、オープンソースのサポートや製品開発を担当。ひろし)野村総合研究所のオープンソースサポートサービス「OpenStandia」で、オープンソースの導入支援やプロジェクト推進を担当。こうへい)野村総合研究所のオープンソースサポートサービス「OpenStandia」で、OpenAMやKeycloakを中心としたOSSの研究開発・テクニカルサポートを担当。たかし)野村総合研究所のオープンソースサポートサービス「OpenStandia」で、OpenAMやKeycloakを中心としたOSSの障害調査・テクニカルサポートを担当。@yagiaoskywalker関連記事なぜ「シングルサインオン」が必要なのか?企業でのWebサービスの実現が具体的になるにつれ、パスワード/IDマネジメントが重視されるようになり、「シングル・サインオン」がますます注目を集めている。この連載では、シングル・サインオンの実践ステップなど具体的な考え方を紹介する。メタディレクトリやLDAPなど「ディレクトリ統合」をキーワードとしてシングル・サインオンを実現するための技術を分かりやすく解説する。企業のID管理で避けては通れない「IDaaS」とは?これまで社内設置が当たり前だったアイデンティティ(ID)管理/認証システム。今回は、OpenAMの姉妹製品で既存アプリケーションを改修せずにシングルサインオンを可能にする「OpenIG」と、OpenAMのデフォルトデータストアである「OpenDJ」について解説します。メールマガジンをご購読ください。申し込みページへITmediaはアイティメディア株式会社の登録商標です。