2016-11-22 216 views
1

我有一个Spring Boot应用程序,它使用Spring Security和OAuth 2.0。目前,它正在基于Spring示例代码的身份验证服务器上运行。但是,运行我们自己的Auth服务器一直是促进开发的短期目标,而不是长期目标。我们一直在使用authorization_code授权类型,并且希望继续使用它,而不考虑Auth服务器的实现。Spring-Security-OAuth2 - 如何添加字段以访问令牌请求?

我正在尝试对使用Azure Active Directory中的OAuth 2.0端点进行更改,以充当我们的身份验证服务器。到目前为止,我已成功调用/ authorize端点。但是,获取/令牌的调用失败,并显示无效的请求错误。我可以看到要求出去了。

看来,Azure声明为必需的参数未在POST请求中填充。查看Azure doco,它期望在发布到端点的消息正文中定义client_id,并且默认情况下不会通过Spring添加。

任何人都可以指出我正确的方向,以便如何将字段添加到构建访问令牌请求时使用的表单映射中?我能看到的AccessTokenRequest对象是在OAuth2ClientConfiguration设置....

@Bean 
@Scope(value = "request", proxyMode = ScopedProxyMode.INTERFACES) 
protected AccessTokenRequest accessTokenRequest(@Value("#{request.parameterMap}") 
Map<String, String[]> parameters, @Value("#{request.getAttribute('currentUri')}") 
String currentUri) { 
    DefaultAccessTokenRequest request = new DefaultAccessTokenRequest(parameters); 
    request.setCurrentUri(currentUri); 
    return request; 
} 

我应该试图确定在request.parameterMap弹簧特性的地图吗?如果是这样,我不太确定这是如何工作的。

或者我应该使用AuthorizationServerConfigurerAdapter类中定义的接口之一吗?

我有发送AccessTokenRequest时要包含的信息,我只是不知道配置Spring以包含它的最佳方式?谢谢你的帮助。

回答

0

其实我找到了。我需要更改客户端身份验证方案。如果你使用YAML,然后YAML-IZE它只需添加以下到我的应用程序属性添加到CLIENT_ID的形式....

security.oauth2.client.clientAuthenticationScheme =形式

。谢谢春天!

相关问题