2015-03-30 10 views
6

ciò che è raccomandato modo di creare pagine personalizzate OAuth pagina di approvazione:Primavera OAuth2 - pagina personalizzata "OAuth approvazione" a OAuth/autorizzare

default page

devo ignorare completamente la roba sulla pagina, hanno bisogno di aggiungere stili, branding ecc. Qual è il modo giusto per raggiungere questo obiettivo? Dove posso vedere l'origine della pagina predefinita per usarla come punto di partenza?

Devo anche scavalcare la pagina/login ma penso che l'approccio di sovrascrivere sarà praticamente lo stesso.

risposta

7

Il modo consigliato è di fornire un MVC di primavera normale @RequestMapping per "/ oauth/confirm_access". Puoi guardare WhitelabelApprovalEndpoint per l'implementazione predefinita. Non dimenticare di usare @SessionAttributes("authorizationRequest").

+0

C'è un altro modo per personalizzare la pagina. Nella mia applicazione di installazione 'HandlerMapping' ha un ordine inferiore a' org.springframework.security.oauth2.provider.endpoint.FrameworkEndpointHandlerMapping' e, di conseguenza, i mapping personalizzati vengono acquisiti dopo quelli predefiniti e non sovrascrivono questi ultimi? – schatten

+0

Non penso di seguirlo. Devi solo fornire una risorsa a/oauth/confirm_access (o qualsiasi altra cosa personalizzi il percorso dell'endpoint). Non importa come lo fai. –

+1

'Framew orkEndpointHandlerMapping' ha un ordine di 'Order.LOWEST_PRECEDENCE - 2', ma il mio personalizzato' RequestMappingHandlerMapping' ha un ordine di' Order.LOWEST_PRECEDENCE' quindi 'org.springframework.web.servlet.DispatcherServlet # getHandler' seleziona' Framew La mappatura e la richiesta di orkEndpointHandlerMapping' non raggiungono mai il mio controller cliente. Purtroppo cambiare ordini non è un'opzione per me in questo momento. Quello che ho finito è 'authorizationEndpoint.setUserApprovalPage (" forward:/oauth/customer_path ")'; nel metodo '@ PostConstruct' di' AuthorizationServerConfiguration'. – schatten

1

Oltre a @ DaveSyer's answer, che dovrebbe funzionare per la maggior parte dei casi. A volte in base alla configurazione e alla personalizzazione, il metodo sopra menzionato potrebbe non funzionare, se Framew‌orkEndpointHandlerMa‌pping dal pacchetto Spring Security OAuth ha un ordine superiore a RequestMappingHandlerMapping della tua applicazione. Se questo è il caso, il dispatcher servlet non ti raggiungerà mai e mostrerà sempre la pagina predefinita.

Un modo per risolverlo è modificare l'ordine dei mapper, dato che l'ordine di Framew‌orkEndpointHandlerMa‌pping è Order.LOWEST_PRECEDENCE - 2.

Un altro modo è quello di impostare la pagina di approvazione per un URL personalizzato, non mappata Framew‌orkEndpointHandlerMa‌pping, quindi servlet dispatcher raggiunge mappatura vi dell'applicazione

@Configuration 
@EnableAuthorizationServer 
protected static class AuthorizationServerConfiguration extends AuthorizationServerConfigurerAdapter { 
    @Autowired 
    private AuthorizationEndpoint authorizationEndpoint; 

    @PostConstruct 
    public void init() { 
     authorizationEndpoint.setUserApprovalPage("forward:/oauth/custom_confirm_access"); 
     authorizationEndpoint.setErrorPage("forward:/oauth/custom_error"); 
    } 
} 

Con un tale mappature di configurazione di /oauth/custom_confirm_access e /oauth/custom_error saranno utilizzati come una pagina di conferma e una pagina di errore rispettivamente.

Problemi correlati