2016-11-22 132 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 =形式

。謝謝春天!

相關問題