Introducing KeyCloak setting methods using client policy and FAPI reference implementation

current location

Think IT > カテゴリ一覧 > 運用・管理 > セキュリティPRセキュリティ技術解説連載 [第3回] :KeycloakのFAPI 1.0対応で実現する高度なAPIセキュリティ2021年12月21日(火) 茂木 昂士(もぎ たかし)Tweet連載3回目となる今回は、FAPIのリファレンス実装を利用して、FAPI 1.I will check the operation of 0.

In the third installment, KeyCloak is set using the client policy introduced last time, and FAPI 1 using the FAPI reference implementation released on GitHub..I will check the operation of 0.

Regarding FAPI reference implementation

Including KeyCloak, FAPI 1.There are several implementation of the licensed server corresponding to 0, and information about the implementation has been published.However, at present, there is almost no information on the implementation of the client / resource server or the corresponding library / framework.FAPI 1.In order to promote the spread of 0, we have released FAPI reference implementation in conjunction with this series.For this reference implementation, use Spring Boot and Nimbus Jose + JWT to FAPI 1.I created a client and resource server corresponding to 0.

This time, we will set up KeyCloak to operate this reference implementation, and a brief explanation of the client / resource server.In addition, the details of the implementation contents and the explanation of the operation will be provided in the fourth.

The file / directory configuration for reference implementation is as follows.

hitachi-fapi-java├── README.md├── client// クライアントアプリケーション│├── src│└── pom.xml├── server// リソースサーバ│├── src│└── pom.xml├── keycloak-export.json // 認可サーバ用 import 用ファイル├── keycloak.p12// 認可サーバ用 HTTPS 用 keystore├── truststore.p12 // 認可サーバ用 Trust Store└── pom.xml

Use the key / certificate settings and the files that are exported from the set Keycloak are also available.

KeyCloak settings

From now on, we will set KeyCloak to operate the reference implementation application.KeyCloak version is the latest 15 at the time of writing.0.Use 2.

First, set HTTPS/MTLS for the application server (Wildfly) where KeyCloak runs.For MTLS, ENABLE X of the Server Administration documentation.509 Set with reference to Client Certificate User Authentication.In the document, X for user authentication.It is a setting for using the 509 certificate, but it is the same setting when used for client authentication.

First, create a new Security-Realm, set the information on the certificate used for HTTPS and the TrustStore to verify MTLS.If you want to operate simply by confirming the operation, etc., the set keystore file (Keycloak) in the repository.P12, Truststore.P12) is also available.

List 1: Create Security-Realm and set TrustStore

After setting of Security-Realm, set it for https-Listener.MTLS is enabled by setting Verify-Client of https-Listener to Requested.

List 2: Https-Listener setting

Finally, set the TrustStore SPI to use when KeyCloak communicates with an external server.This time, it is necessary because you use your self -certificate.For details on the settings, see KeyCloak's Server Installation Document Outgoing HTTPS Request TrustStore.

List 3: Truststore SPI settings

That's all for the setting before starting KeyCloak.

The subsequent settings create a Realm called FAPI and set it to the Realm.

Fapi Advanced Security Profile 1 with reference to the 2nd article.0のクライアントポリシーを作成します。クライアントポリシーを作成すると、fapi1advというロールがついたクライアントにポリシーが適用されるようになります。

FAPI 1.In 0, PS256 or ES256 is required for the ID token signature algorithm.The KeyCloak initialization does not have a key pair corresponding to these signature algorithms.We will create the necessary key pairs to support these signature algorithms.

First, select the Realm Settings → Keys → Providers tab and "Add Keystore...」からrsa-generated(ES256を利用する場合はecdsa-generated)をクリックします。

Introducing KeyCloak setting methods using client policy and FAPI reference implementation

Added Key Provider

When you click, the setting item of the key pair to be created is displayed. Select PS256 (or P-256) in Algorithm and click Save.

rsa-generated Added Key Provider

When the key pair is created, the key with the ALGORITHM PS256 and ES256 is displayed in the list of Active tabs.

PS256, ES256 key addition results

From here, create a client and make the necessary settings.The outline of the client is as follows.

#client idAccess Type役割
1fapi-clientConfidentialクライアントアプリケーション
2fapi-resource-serverbearer-onlyリソースサーバー

Add a FAPI1ADV roll to the client application to apply the client policy to the created client.

Add a roll

Valid Redirect URIsにはクライアントアプリケーションのパスを指定します。今回のサンプルアプリケーションではhttps://localhost:8082/callbackを指定してください。

Details of ID token and request object signature algorithms and encryption algorithms will be performed at Fine Grain OpenID Connect Configuration.

Signing, encryption algorithm setting

The required settings are as follows.

#設定項目設定値備考
1ID Token Encryption KeyManagement AlgorithmIDトークンの暗号化を行う場合はRSA-OAEPまたはRSA-OAEP-256を選択する
2ID Token Encryption Content Encryption AlgorithmIDトークンの暗号化を行う場合は選択が必要
3Request Object Signature AlgorithmPS256ES256でも動作可能
4Request Object Requiredrequest only

Fapi 1 for ID token encryption.0では必須ではありませんが、今回のリファレンス実装では暗号化にも対応しています。IDトークンの暗号化を試したい場合は、ID Token Encryption Key Management Algorithmに設定した値を、クライアントのapplication.yamlファイルに指定してください。

FAPI 1.0では、クライアント認証方式としてtls_client_auth(クライアント証明書による認証)とprivate_key_jwt(JWTを利用した認証)の2つの方式が規定されています。リファレンス実装ではデフォルトでtls_client_authを使うように設定されているため、ここではtls_client_authの設定方法を説明します。

Setting of client authentication method

クライアントのCredentialsタブで、クライアントの認証方式を設定します。tls_client_authを利用する場合は、Client AuthenticatorにX509 Certificateを指定します。Subject DNには、クライアント証明書で設定したDN(Distinguished Name)を設定します。リファレンス実装では設定済みの証明書があるので、その証明書にあわせてクライアントにはCN=fapi-client、リソースサーバにはCN=fapi-resource-serverと設定します。

Finally, set the key information used to sign the request object and encrypt the ID token.This setting is only for client applications.

Key information settings

リファレンス実装ではJWKを公開するURLを用意しているので、Use JWKS URLをONに、JWKS URLにhttps://localhost:8082/jwk_setを設定します。

This completes the KeyCloak settings.

Operation confirmation using reference implementation

From here, we will use the reference implementation application to check simple operation.

Execute the following command and start the client application and resource server.

List 4: Starting the client application

$ cd client$ mvn spring-boot:run

List 5: Start the resource server

$ cd server$ mvn spring-boot:run

If there is no error, the client will start on the 8082 port and the resource server will be launched on the 8081 port.

First, open https: // localhost: 8082/in the browser to access the client.

Top screen of client application

この画面から、アクセストークンの取得やリフレッシュ/失効、APIリクエストの実行が行えます。Get Tokenボタンを押下すると認可リクエストが作成され、Keycloakの認可エンドポイントにリダイレクトされます。

Login in KeyCloak

設定済みのファイルをインポートしている場合はuser/passで認証ができます。認証が成功すると、アクセストークン、リフレッシュトークン、IDトークンがそれぞれ取得できます。

Access token acquisition results

アクセストークンの取得後にCall APIボタンを押下すると、アクセストークン付きのAPIリクエストが実行できます。リソースサーバには、下記のエンドポイントを用意してあります。

#パス返却値
1/固定値({"status" : "ok" })
2/me認証されたユーザの情報(username、sub claim)
3/echo/{value}{value}で指定された値
4/introspectionToken Introspectionの結果
5/headersリクエストヘッダーの内容

summary

This time, the setting method using the KeyCloak client policy and FAPI 1.Introducing a simple operation using the reference implementation corresponding to 0.

Next time, I will explain in more detail how to implement the reference implementation and how to use it.

Tweet keycloak / FAPI / Spring Boot / Nimbus Jose / JWT前の記事第2回KeyCloak client policy (Client Policies) 次の記事第4回FAPI 1.How to make client applications and resource servers compliant with 0 著者茂木 昂士(もぎ たかし)この著者の記事一覧この著者の記事一覧株式会社日立製作所 OSSソリューションセンタ株式会社日立製作所 OSSソリューションセンタ所属。これまではソフトウェアエンジニアとしてストレージやサーバの管理ソフトウェア開発に従事してきた。現在は、主にアイデンティティー管理OSSやAPI管理OSSの検証、導入支援を行っている。

Serial back number

セキュリティ技術解説第4回

FAPI 1.How to make client applications and resource servers compliant with 0

2022/1/18連載4回目となる今回は、FAPI 1.How to make client applications and resource servers compliant with 0を解説します。続きを読むセキュリティ技術解説第3回

Introducing KeyCloak setting methods using client policy and FAPI reference implementation

2021/12/21連載3回目となる今回は、FAPIのリファレンス実装を利用して、FAPI 1.I will check the operation of 0.続きを読むセキュリティ技術解説第2回

KeyCloak client policy (Client Policies)

2021/11/9連載の2回目となる今回は、さまざまなセキュリティプロファイルをサポートするための仕組み、クライアントポリシーをご紹介します。続きを読む

THINK IT e -mail magazine member registration is being accepted

Think ITでは、技術情報が詰まったメールマガジン「Think IT Weekly」の配信サービスを提供しています。メルマガ会員登録を済ませれば、メルマガだけでなく、さまざまな限定特典を入手できるようになります。

See the service contents of THINK IT e -mail magazine members

This article is also read

キャリア・人材技術解説

IT engineer ideas -Create "time" and "things "-

2022/3/17 AI・人工知能技術解説

How AI is used in the real world ⑤ -Image recognition (3) (Image Recognition)

2022/3/16 データ解析技術解説

Learn the basics of data management (4) Data management advanced step (Part 2)

2022/3/11セキュリティイベント

Kubecon Na 2021, explaining SLSA to prevent tapping in the software development process

2022/3/9 資格・試験技術解説

Solution of problems related to "factory security"

2022/3/8 キャリア・人材技術解説

Collection of "scenes" phrases to smoothly promote meetings in English

2022/3/4

Recommended articles by full text search engine

Topへ戻る