In meinem Büro wir einen fremden Blog-Eintrag gefunden, der uns bis zur endgültigen Umsetzung http://statemachine.hatenablog.com/entry/2016/04/19/155920
Als Abhilfe führt, mußte man zwei Klassen hinzufügen OAuth2RestTemplate und Anfrage Verstärker zu erfassen. Es funktioniert mit Springboot 1.3.8, das Frühling 4.2.8 enthält, wir konnten es nicht mit höherer Version arbeiten lassen.
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);
}
}
Die PostConstruct
Anmerkung auf ein Verfahren verwendet wird, die ausgeführt werden muss, nachdem die Abhängigkeit Injektion getan, um irgendeine Initialisierung durchzuführen tion.
Ich hoffe, dies hilft Ihnen bei der Implementierung.
Jedes Update zu diesem Thema. –