Tại văn phòng của tôi, chúng tôi thấy một bài viết trên blog nước ngoài mà dẫn chúng ta đến việc thực hiện chính thức http://statemachine.hatenablog.com/entry/2016/04/19/155920
Là một khắc phục, bạn đã có thêm hai lớp để nắm bắt OAuth2RestTemplate và yêu cầu chất hỗ trợ. Nó hoạt động với khởi động mùa xuân 1.3.8 có chứa mùa xuân 4.2.8, chúng tôi không thể làm cho nó hoạt động với phiên bản cao hơn.
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);
}
}
Chú thích PostConstruct
được sử dụng trên một phương pháp mà cần phải được thực hiện sau khi tiêm phụ thuộc là được thực hiện để thực hiện bất kỳ initializa nào sự.
Tôi hy vọng điều này sẽ giúp bạn thực hiện.
Mọi cập nhật về điều này. –