7.3. トークン伝播リアクティブ
quarkus-oidc-token-propagation-reactive
エクステンションは、認証情報の伝播を簡素化する RestEasy Reactive Client io.quarkus.oidc.token.propagation.reactive.AccessTokenRequestReactiveFilter
を提供します。このクライアントは、現在アクティブなリクエストに存在する ベアラートークン、または 認可コードフローメカニズム から取得したトークンを、HTTP Authorization
ヘッダーの Bearer
スキーム値として伝播します。
io.quarkus.oidc.token.propagation.AccessToken
または org.eclipse.microprofile.rest.client.annotation.RegisterProvider
アノテーションのいずれかを使用して、AccessTokenRequestReactiveFilter
を選択的に登録できます。次に例を示します。
import org.eclipse.microprofile.rest.client.inject.RegisterRestClient; import io.quarkus.oidc.token.propagation.AccessToken; @RegisterRestClient @AccessToken @Path("/") public interface ProtectedResourceService { @GET String getUserName(); }
あるいは、以下のような場合もあります。
import org.eclipse.microprofile.rest.client.annotation.RegisterProvider; import org.eclipse.microprofile.rest.client.inject.RegisterRestClient; import io.quarkus.oidc.token.propagation.reactive.AccessTokenRequestReactiveFilter; @RegisterRestClient @RegisterProvider(AccessTokenRequestReactiveFilter.class) @Path("/") public interface ProtectedResourceService { @GET String getUserName(); }
さらに、AccessTokenRequestReactiveFilter
は、トークンを伝播する前に交換する必要がある複雑なアプリケーションをサポートできます。
Keycloak または トークン交換 トークングラントをサポートする別の OIDC プロバイダーを使用する場合は、次のように AccessTokenRequestReactiveFilter
を設定してトークンを交換できます。
quarkus.oidc-client.auth-server-url=http://localhost:8180/auth/realms/quarkus
quarkus.oidc-client.client-id=quarkus-app
quarkus.oidc-client.credentials.secret=secret
quarkus.oidc-client.grant.type=exchange
quarkus.oidc-client.grant-options.exchange.audience=quarkus-app-exchange
quarkus.oidc-token-propagation.exchange-token=true 1
- 1
- OidcClient 名が
io.quarkus.oidc.token.propagation.AccessToken#exchangeTokenClient
アノテーション属性で設定されている場合、exchange-token
設定プロパティーは無視されることに注意してください。
注記: AccessTokenRequestReactiveFilter
は OidcClient
を使用して現在のトークンを交換します。quarkus.oidc-client.grant-options.exchange
を使用して、OpenID Connect Provider が期待する追加の交換プロパティーを設定できます。
現在のトークンを交換するために JWT ベアラートークングラント を 使用する必要がある Azure
などのプロバイダーを使用する場合は、次のように AccessTokenRequestReactiveFilter
を設定してトークンを交換できます。
quarkus.oidc-client.auth-server-url=${azure.provider.url} quarkus.oidc-client.client-id=quarkus-app quarkus.oidc-client.credentials.secret=secret quarkus.oidc-client.grant.type=jwt quarkus.oidc-client.grant-options.jwt.requested_token_use=on_behalf_of quarkus.oidc-client.scopes=https://graph.microsoft.com/user.read,offline_access quarkus.oidc-token-propagation-reactive.exchange-token=true
AccessTokenRequestReactiveFilter
はデフォルトの OidcClient
を使用します。名前付きの OidcClient
は、quarkus.oidc-token-propagation-reactive.client-name
設定プロパティーまたは io.quarkus.oidc.token.propagation.AccessToken#exchangeTokenClient
アノテーション属性を使用して選択できます。