Spring Boot Oauth2使用证书中的pub密钥验证令牌验证

时间:2016-04-27 09:35:15

标签: java oauth spring-boot

我们使用Ping Federate作为身份验证服务器,并计划在Spring启动之上构建微服务。我们的想法是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也会失败,因为它期望"普通"公钥但不包含在证书中的公钥。

扩展spring security oauth组件以支持我的IDP的最佳方法是什么?我在考虑覆盖ResourceServerTokenServicesConfiguration中的一些配置,但看起来对我来说很有趣(JwtAccessTokenConverter)不支持覆盖。

1 个答案:

答案 0 :(得分:0)

我已经在https://github.com/berndgoetz/spring-boot-oauth2-pingfederate上使用PingFederate 8.6(+)在Spring Boot 2上提供了一个演示应用程序。基本上,这是实现最少的代码以覆盖默认的Spring oAuth2行为。希望这对其他尝试将PingFederate与Spring Security + oAuth2结合使用的人有帮助