Keycloakクライアントアダプターを利用してAPIサービスを構築してみよう:Keycloak超入門(3)(2/4 ページ)
本連載では、近年注目されている認証プロトコル「OpenID Connect」をサポートするオープンソースのシングルサインオン(SSO)ソフトウェア「Keycloak」の活用方法を解説していきます。今回は、Keycloakクライアントアダプターを利用して、APIサービスを構築してみます。
APIサーバの構築
APIサーバは、Wildfly上で動作するアプリケーションとして構築します。KeycloakのWildflyアダプターを利用すると、対象アプリケーションに設定ファイルを配置するだけでKeycloakと連携できるようになり、OpenID Connectによるアクセス制御が実現できます。
ここではWildflyアダプターのインストール方法、アダプターの設定方法、Keycloakによるアクセス制御の設定方法を説明していきます。
Wildflyアダプターのインストール
Wildflyアダプターのインストールは、本連載第2回でKeycloakにインストールした方法と同様です。
Wildflyアダプターは、Keycloakのダウンロードサイトからダウンロードします。今回は「keycloak-wildfly-adapter-dist-3.2.0.Final.zip」(Wildfly 9/10向けのクライアントアダプター)を使用します。ダウンロードしたファイルは、Keycloakのディレクトリで解凍します。
# <wildfly.home>は適宜変更してください。 $ cp keycloak-wildfly-adapter-dist-3.2.0.Final.zip <wildfly.home> $ cd <wildfly.home> $ unzip keycloak-wildfly-adapter-dist-3.2.0.Final.zip
ファイルを解凍後は以下のコマンドを実行して、WildflyサーバにKeycloakクライアントアダプターをインストールします。
$ ./bin/jboss-cli.sh --file=bin/adapter-install-offline.cli
Keycloakアダプターの設定
Keycloakアダプターの設定には「keycloak.json」というファイルを、「WEB-INF」ディレクトリ以下に配置する必要があります。このファイルにはKeycloakサーバに関する情報や、Keycloakからトークンを発行するために必要な情報などが記載されています。
Keycloakの管理コンソールから「keycloak.json」をダウンロードして、「WEB-INF」ディレクトリに配置します。Keycloakのクライアント画面から「Installation」タブをクリックし、「Format Option」を「Keycloak OIDC JSON」に設定すると、必要な設定項目が記載されたjsonファイルが表示されます(画面8)。
「keycloak.json」ファイルの内容は、以下のようになっています。
{ "realm": "sample", "bearer-only": true, "auth-server-url": "http://localhost:8080/auth", "ssl-required": "external", "resource": "api-service" }
今回は必要最低限の設定になりますが、他にもKeycloakとアプリケーションが連携するための多くの設定項目があります。詳細については公式ドキュメントの「Java Adapter Config」を参照してください。
- Java Adapter Config[英語](Keycloak Documentation)
APIサーバアプリケーションの設定
アプリケーションのアクセス制御は「web.xml」ファイルに記述します。
<?xml version="1.0" encoding="UTF-8"?> <web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://java.sun.com/xml/ns/javaee" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd" version="3.0"> <module-name>service</module-name> <security-constraint> <web-resource-collection> <web-resource-name>user resource</web-resource-name> <url-pattern>/user/*</url-pattern> </web-resource-collection> <auth-constraint> <role-name>user</role-name> </auth-constraint> </security-constraint> <security-constraint> <web-resource-collection> <web-resource-name>admin resource</web-resource-name> <url-pattern>/admin/*</url-pattern> </web-resource-collection> <auth-constraint> <role-name>admin</role-name> </auth-constraint> </security-constraint> <login-config> <auth-method>KEYCLOAK</auth-method> <realm-name>sample</realm-name> </login-config> <security-role> <role-name>user</role-name> </security-role> <security-role> <role-name>admin</role-name> </security-role> </web-app>
上記の設定では「/users/」以降のリソースにはuserまたはadminロールを持つユーザーが、「/admin/」以降のリソースにはadminロールを持つユーザーだけがアクセスできるようになります。
今回はシンプルな設定にしましたが、より高度な設定が必要な場合はKeycloakの公式ドキュメントの「JBoss EAP/Wildfly Adapter」を参照してください。
- JBoss EAP/Wildfly Adapter[英語](Keycloak Documentation)
Copyright © ITmedia, Inc. All Rights Reserved.
関連記事
- なぜ「シングルサインオン」が必要なのか?
企業でのWebサービスの実現が具体的になるにつれ、パスワード/IDマネジメントが重視されるようになり、「シングル・サインオン」がますます注目を集めている。この連載では、シングル・サインオンの実践ステップなど具体的な考え方を紹介する。また、メタディレクトリやLDAPなど「ディレクトリ統合」をキーワードとしてシングル・サインオンを実現するための技術を分かりやすく解説する。(編集部) - 第1回 もはや企業のID管理で避けては通れない「IDaaS」とは?
これまで社内設置が当たり前だったアイデンティティ(ID)管理/認証システム。でも「クラウド」「モバイル」に代表される激烈な変化に対応できる、と本当に思っていますか? ID管理/シングルサインオンの新たな選択肢「IDaaS」について解説する連載開始! - 強力なSSOを実現するXML認証・認可サービス(SAML)
- OpenIG、OpenDJと連携したOpenAMの新機能
今回は、OpenAMの姉妹製品で既存アプリケーションを改修せずにシングルサインオンを可能にする「OpenIG」と、OpenAMのデフォルトデータストアである「OpenDJ」について解説します。