W moim biurze okazało post zagranicznych blogów, które prowadzą nas do ostatecznego wdrożenia http://statemachine.hatenablog.com/entry/2016/04/19/155920
jako obejście, trzeba było dodać dwie klasy uchwycić OAuth2RestTemplate i poprosić wzmacniacze. Działa z wiosennym boot 1.3.8, który zawiera wiosnę 4.2.8, nie mogliśmy sprawić, żeby działał z wyższą wersją.
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
Adnotacja jest używany w sposób, który musi być wykonany po wtrysku jest zależność zrobić, aby wykonać jakąkolwiek inicjalizację tację.
Mam nadzieję, że pomoże to w implementacji.
Wszelkie aktualizacje na ten temat. –