このバージョンはまだ開発中であり、まだ安定しているとは見なされていません。最新の安定バージョンについては、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)
}