W definicji wiosennej zasobu zdalnego, który jest chroniony przez OAuth2, do którego aplikacja kliencka żąda dostępu, ustawiam parametr use-current-uri na wartość true, czyli innymi słowy, bieżący identyfikator URI powinien być używany jako przekierowanie (jeśli jest dostępne). Wygląda to tak:Zabezpieczenie wiosny oauth2 błędnie używa wewnętrznego adresu URL jako bieżącego identyfikatora URI do przekierowania
<oauth:resource id="myResourceId" type="authorization_code"
client-id="${clientId}" client-secret="${clientSecret}"
access-token-uri="${accessTokenUri}"
user-authorization-uri="${userAuthorizationUri}"
use-current-uri="true"
scope="myScope"
pre-established-redirect-uri="${preEstablishedRedirectUri}"/>
Teraz jest problem, klient Wiosna Bezpieczeństwo OAuth2 wzrośnie bieżący wewnętrzny Tomcat URL zamiast adresu URL aplikacji internetowej publicznego. Scenariusz jest serwer Tomcat siedzi za serwerem Apache, co skutkuje dwoma zestawami adresami:
- URL aplikacji internetowej publicznego jest http://example.com/users/login
- Wewnętrzny URL Tomcat jest http://localhost:8080/myapplication/users/login
Ponieważ URL przekierowania aby serwer autoryzacji (np. Twitter, ORCID) mógł użyć do przesłania kodu autoryzacji, należy użyć publicznego adresu URL aplikacji internetowej, a nie wewnętrznego.
Nawiasem mówiąc, używam następującą wersję wiosenno-Security-OAuth2:
- wiosna-security-oauth2-1.0.5.RELEASE
- wiosna-core-3.1.2. RELEASE
- wiosna-security-core-3.1.3.RELEASE
zastanawiać, czy istnieje sposób, aby powiedzieć wiosny do korzystania z publicznego adresu URL. Dzięki.