有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java Spring Boot Oauth2使用证书中的pub密钥进行访问令牌验证

我们正在使用Ping Federate作为身份验证服务器,并计划在Spring boot之上构建微服务。其想法是Ping Federate将处理登录并向客户端应用程序提供访问令牌(JWT),然后客户端应用程序使用这些令牌访问REST服务
为了验证令牌,Ping Federate通过URL公开包含公钥的证书。它只返回如下所示的证书:

-----BEGIN CERTIFICATE-----
MIIDAjCCAeqgAwIBAgIGAVKHvf+JMA0GCSqGSIb3DQEBBQUAMEIxCzAJBgNVBAYTAkNBMRAwDgYD
VQQKEwdVbml0cm9uMSEwHwYDVQQDExhpbnQtc2lnbm9uLm15dW5pdHJvbi5jb20wHhcNMTYwMTI4
MTAxODQxWhcNMjEwNzIwMDkxODQxWjBCMQswCQYDVQQGEwJDQTEQMA4GA1UEChMHVW5pdHJvbjEh
MB8GA1UEAxMYaW50LXNpZ25vbi5teXVuaXRyb24uY29tMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8A
MIIBCgKCAQEAk2PRFPfaQjjhVllok1Xq+Tybkg9Nv3XhSRjpq06iV8CzjJ8T8uwK//TLYM2Z7rqP
NDrMmzUhjwEM4WVAJf6stj7D2uQ01MU8sZTlQ3mygWm9qnJnijMyk0081oe429iabRGYfik2SvLd
Nqj53UUP858Qfk82LFjXdC2G2XkxB2ejwirsdQ/8ud6Sduom5NdIXNzMN3uucZ996wIdHwEhFBzV
eMSlY1LJAiKtwsTq6aP/A/GPBrEBa5Duiiz/z91KBNIlfiXEcxRjPgkJVgVpfVv0o7XBIoKnS4y8
uurlBlpT3fg6JLifBtkYe+Y8tV0DjFdE8LSMzpYOXdT4h069LwIDAQABMA0GCSqGSIb3DQEBBQUA
A4IBAQAaibNAZ7/fmdsoTg0vb4jqYFR1WrsqZ7M+7D0fMRNtBAziLBjzlsv2CuP+Zn3tvoon0QQO
/PzEIxTlWXv+F25ej2owK7J3ovyZyQBVNyjv8S/YZfSYkbKQo1DtbKhEAzQyBMiY611jbcbo2TDz
mvH436SipBgZqG0vK+ZzMcp4HVp2xAtwD567oj0AbP6VHkJUgWyiE7HOf+FSlq07jPuy/Hbw2/lJ
ZI1inmPVpuUCJ3pdfzfI2f4ETLzroQ588BnGnsLPIUH6W3r2JMAA1m5WbWc9w1VWJJelzHxlIdFg
yoEGcZn7wctVooeEzS/ghoelwFVXCKad30GnmtXdoXj+
-----END CERTIFICATE-----

security.oauth.resource.jwt.key-uri属性设置到该端点时,ResourceServerTokenServicesConfiguration中的自动配置失败,因为它不仅需要一个简单的字符串,还希望将其映射到映射中。在第二步中,JwtAccessTokenConverter也会失败,因为它需要一个“普通”公钥,而不是包装在证书中的公钥

扩展SpringSecurityOAuth组件以支持我的IDP的最佳方法是什么?我正在考虑覆盖ResourceServerTokenServicesConfiguration中的一些配置,但我感兴趣的(JwtAccessTokenConverter)似乎不支持覆盖


共 (1) 个答案

  1. # 1 楼答案

    我使用PingFederate 8.6(+)在https://github.com/berndgoetz/spring-boot-oauth2-pingfederate为Spring Boot 2提供了一个演示应用程序。它基本上实现了覆盖默认Spring oAuth2行为所需的最少代码。我希望这能帮助其他寻求使用PingFederate和Spring Security+oAuth2的人