2014-11-03 9 views
6

Ho incorporato Satellizer nella mia app con una varietà di provider di accesso social (Facebook, Twitter, Google). Il mio stack è composto da: AngularJS (UI Router) e NodeJS/Express.OAuth: come impostare l'URL di richiamata dinamico?

Mi sembra di incontrare una sfida che imposta URL di callback dinamici per l'autenticazione dell'utente. La mia app non ha un URL di accesso coerente come http://example.com/login perché tutti i miei URL sono dinamici e basati su token, ad esempio: http://example.com/XH12aT1771. In effetti, la mia esperienza utente di accesso è una sovrapposizione modale e non esiste alcuna pagina di accesso coerente.

La sfida con il mio sistema di integrazione con OAuth è dopo aver registrato l'utente nella mia app tramite l'overlay modale, voglio reinserirli nella stanza esatta (o token) in cui si trovano, non reindirizzarli ad alcuni pagina dell'URL di callback in quanto sarebbe un'esperienza utente scadente.

È l'unico modo per rendere il mio URL di callback OAuth con hardcoded, ad esempio: http://example.com/success e quindi reindirizzare l'utente al proprio token dopo aver colpito la pagina /success? Questo è davvero l'unico modo per fare una cosa del genere?

Fatemi sapere se avete bisogno di ulteriori dettagli sulla domanda, grazie per l'aiuto.

+0

ho usato 3a parte OAuth 2 per alcune applicazioni, ma non ho mai trovato la necessità di creare URL di callback statici . Dovrebbe corrispondere solo all'URL di base (ad esempio http: // example.it /) e non dovrebbe preoccuparsi di ciò che è scritto dopo. – Kop4lyf

+0

hai provato a impostarlo su http: // localhost? – DaImTo

+1

L'URL di richiamata è solitamente codificato su un percorso specifico. Forse potresti provare a far loro colpire il tuo token route e poi reindirizzarli verso l'URL di callback? Mi attengo a http://passportjs.org/ nelle mie app node.js, quindi non sono sicuro di cosa sia possibile. – cchamberlain

risposta

1

non saprei sulle opzioni che Sattelizer ti dà, e sarebbe anche dipendere le opzioni supportate dal Authorisation Server (AS), ma:

Dal punto di vista della sicurezza si consiglia di utilizzare un determinato URL di callback comunque per prevenire alcuni degli attacchi che possono verificarsi a causa della corrispondenza degli URL non funzionanti o sciatti sul lato AS o della perdita accidentale di token a terze parti sul lato RP a causa di immagini/iframe incorporati su pagine che non consumano il token ecc.

Quindi, indipendentemente dal fatto che ci sia un altro modo, sarebbe comunque buona norma usare un URL di callback fisso e si può (si spera) associare l'origine al URL con il parametro di stato che viene inviato o inserito in un cookie e ripristinarlo dopo aver consumato il token sull'URL di richiamata.

1

Non ho familiarità con Satellizer, ma ho creato una struttura di callback oauth basata su url dinamico.

$callback_url = Configure::read('Your.base') . 'connect/provider/signin/' . $invite_code; 

Siamo fuori da un URL univoco, che mette qualcuno in una stanza specifica.

1

Non ho familiarità con Satelizer, ma dopo una lettura breve, sembra esserci la possibilità di configurare l'url di richiamata dopo l'accesso.

// Google 
$authProvider.google({ 
    url: '/auth/google', 
    authorizationEndpoint: 'https://accounts.google.com/o/oauth2/auth', 
    redirectUri: window.location.origin || window.location.protocol + '//' + window.location.host, 
    scope: ['profile', 'email']; 
    scopePrefix: 'openid'; 
    scopeDelimiter: ' ', 
    requiredUrlParams: ['scope'], 
    optionalUrlParams: ['display'], 
    display: 'popup', 
    type: '2.0', 
    popupOptions: { width: 452, height: 633 } 
}); 

Qui configurare l'URI reindirizzamento direttamente alla posizione, l'utente è attualmente a. Vedi Satelizer Configuration

Non è questa la cosa che stai cercando?

0

sembra che la risposta debba essere quello KFIS detto o -

$authProvider.loginRedirect = '/'; // Change this relative path 

per - Satellizer

Problemi correlati