在我的辦公室,我們發現國外的博客文章這導致我們最終實施http://statemachine.hatenablog.com/entry/2016/04/19/155920
作爲一種解決辦法,你必須添加兩個類捕獲OAuth2RestTemplate並要求增強。它與包含彈簧4.2.8的彈簧引導1.3.8一起使用,我們不能使它與更高版本一起工作。
application.yml:
azure:
resource: https://graph.windows.net
security:
oauth2:
client:
clientId: <<your client id>>
clientSecret: <<your client secret>>
accessTokenUri: https://login.microsoftonline.com/<<tenantId>>/oauth2/token
userAuthorizationUri: https://login.microsoftonline.com/<<tenantId>>/oauth2/authorize
clientAuthenticationScheme: form
scope: openid
resource:
userInfoUri: https://graph.windows.net/me?api-version=1.6
AzureRequestEnhancer:
@Component
public class AzureRequestEnhancer implements RequestEnhancer {
@Value("${azure.resource:null}")
private String aadResource;
@Override
public void enhance(AccessTokenRequest request, OAuth2ProtectedResourceDetails resource, MultiValueMap<String, String> form, HttpHeaders headers) {
if (!StringUtils.isEmpty(resource)) {
form.set("resource", aadResource);
}
}
}
AzureRequestEnhancerCustomizer:
@Component
public class AzureRequestEnhancerCustomizer {
@Autowired
private OAuth2RestTemplate userInfoRestTemplate;
@Autowired
private AzureRequestEnhancer azureRequestEnhancer;
@PostConstruct
public void testWiring() {
AuthorizationCodeAccessTokenProvider authorizationCodeAccessTokenProvider = new AuthorizationCodeAccessTokenProvider();
authorizationCodeAccessTokenProvider.setTokenRequestEnhancer(azureRequestEnhancer);
userInfoRestTemplate.setAccessTokenProvider(authorizationCodeAccessTokenProvider);
}
}
的PostConstruct
註釋在需要後依賴注入將被執行的方法中使用完成執行任何初始化灰。
我希望這可以幫助您實施。
對此有任何更新。 –