このバージョンはまだ開発中であり、まだ安定しているとは見なされていません。最新の安定バージョンについては、Spring Security 6.4.5 を使用してください! |
認証の変更
Opaque トークン認証情報は暗号化されます
イントロスペクション RFC にさらに厳密に準拠するために、Spring Security の Opaque トークンサポートは、認証ヘッダーを作成する前にクライアント ID とシークレットをエンコードします。この変更により、クライアント ID とシークレットを自分でエンコードする必要がなくなります。
クライアント ID またはシークレットに URL に安全でない文字が含まれている場合は、次の操作を実行してこの変更に備えることができます。
introspectionClientCredentials
の使用箇所の置き換え
Since Spring Security can now do the encoding for you, replace using introspectionClientCredentials
with publishing the following @Bean
:
Java
Kotlin
@Bean
OpaqueTokenIntrospector introspector() {
return SpringOpaqueTokenIntrospector.withIntrospectionUri(introspectionUri)
.clientId(unencodedClientId).clientSecret(unencodedClientSecret).build();
}
@Bean
fun introspector(): OpaqueTokenIntrospector {
return SpringOpaqueTokenIntrospector.withIntrospectionUri(introspectionUri)
.clientId(unencodedClientId).clientSecret(unencodedClientSecret).build()
}
上記は 7.0 のデフォルトになります。
If this setting gives you trouble or you cannot apply it for now, you can use the RestOperations
constructor instead:
Java
Kotlin
@Bean
OpaqueTokenIntrospector introspector() {
RestTemplate rest = new RestTemplate();
rest.addInterceptor(new BasicAuthenticationInterceptor(encodedClientId, encodedClientSecret));
return new SpringOpaqueTokenIntrospector(introspectionUri, rest);
}
@Bean
fun introspector(): OpaqueTokenIntrospector {
val rest = RestTemplate()
rest.addInterceptor(BasicAuthenticationInterceptor(encodedClientId, encodedClientSecret))
return SpringOpaqueTokenIntrospector(introspectionUri, rest)
}