Ich möchte die Token-Anfrage für meinen OAuth2-Provider erweitern. Ich muss der POST-Anfrage einen zusätzlichen Parameter hinzufügen. Ich verstehe nicht, wo ich mich in das Spring Boot-Framework einklinken muss, um dies zu erreichen.Wie kann ich den Spring Boot AccessTokenProvider anpassen?
Das Spring Boot-Framework bietet einen Haken zum Anpassen des OAuth2RestTemplate wie in "Customizing the User Info RestTemplate" beschrieben. Ich habe den folgenden Customizer implementiert, der instanziiert und wie erwartet aufgerufen wird. Leider scheint mein Provider nicht angerufen zu werden, wenn die Token-Anfrage gemacht wird.
public class AadUserInfoRestTemplateCustomizer implements UserInfoRestTemplateCustomizer {
@Override
public void customize(OAuth2RestTemplate oAuth2RestTemplate) {
oAuth2RestTemplate.setAuthenticator(new AadOauth2RequestAuthenticator());
// Attempt 1: Use my own token provider, but it never gets called...
oAuth2RestTemplate.setAccessTokenProvider(new AadAccessTokenProvider());
// Even better, if only OAuth2RestTemplate provided a getter for AccessTokenProvider, I could add interceptors and or enhancers
// Can't do this :(AuthorizationCodeAccessTokenProvider provider = oAuth2RestTemplate.getAccessTokenProvider();
}
}
FRAGT:
Wie ein benutzerdefinierten AccessTokeProvder gesetzt hat, oder noch besser, einen Verweis auf die eine Standard erhalten und mit einem Abfangjäger oder Enhancer in die Anforderungs Haken?
CODE SAMPLE
In der Gabel unten finden Sie in der/einfaches Modul zu sehen. Fügen Sie Ihre AAD Mieter info in die /simple/src/main/resources/application.yml Datei:
https://github.com/bmillerbma/tut-spring-boot-oauth2/tree/aad
NOTES:
This commit auf Rahmen scheint dies möglich zu machen, Aber wie nutzt man diese Funktionalität?
This question scheint verwandt zu sein. Irgendwie hat der Typ einen benutzerdefinierten Anbieter hinzugefügt. Aber wo?
Haben Sie ein minimales Beispielprojekt? Es ist schwer zu verstehen, warum der 'AadAccessTokenProvider' im obigen Code-Snippet nicht verwendet wird. –
Siehe Abschnitt "Codebeispiel". – Brett