7

Si sta tentando di implementare l'autenticazione di Azure AD B2C con un'app Web utilizzando il flusso implicito. Possiamo accedere ed essere reindirizzati correttamente all'URL corretto che include gli elementi corretti nell'URL di reindirizzamento (codice id_token &). Tuttavia, come suggerisce questo articolo (https://github.com/Azure/azure-content/blob/master/articles/active-directory-b2c/active-directory-b2c-reference-oidc.md#get-a-token), l'app deve quindi eseguire una richiesta POST xhr all'endpoint del token per recuperare un token per una risorsa (web api) con cui l'app deve interagire. Tuttavia, quando provo a fare un XHR POST a quell'endpoint token (https://login.microsoftonline.com/ {tenant} /oauth2/v2.0/token?p=b2c_1_signinpolicy) il browser (giustamente) esegue un controllo preflight (una chiamata OPTIONS) per determinare se può chiamare l'endpoint come in un altro dominio. La chiamata OPTION funziona ma non contiene le intestazioni necessarie (Access-Control-Allow-Origin) per il browser per consentire la chiamata POST all'endpoint.Problema CORS durante l'acquisizione di un token in Azure AD B2C (Flusso imprevisto)

Mi manca qualcosa o faccio qualcosa di sbagliato?

Qualsiasi aiuto apprezzato!

Jon

+0

Sembra che il flusso implicito non sia ancora supportato, vedere https://azure.microsoft.com/en-us/documentation/articles/active-directory-b2c-apps/ –

+0

@BojanResnik Sì, l'ho visto, nonostante tutto L'interfaccia utente e altra documentazione suggeriscono diversamente. – Jon

risposta

6

Gli endpoint dC auth Azure (B2C o in altro modo) non supportano CORS, né saranno mai.

Per le app Javascript, viene utilizzato il flusso implicito con response_type=token o response_type=id_token per ottenere token direttamente dall'endpoint di autorizzazione - non è necessario CORS. Sentiti libero di provarlo, dovrebbe funzionare bene.

La ragione per cui le app JavaScript non sono supportate al momento è perché dopo un'ora, l'id_token/access_token che utilizzi questo metodo scadrà. E non abbiamo un modo per aggiornare/ottenere un nuovo token in silenzio. Ciò significa che, nel migliore dei casi, l'applicazione Javascript dovrà reindirizzare a AAD ogni ora.

Non pensiamo che sia accettabile, quindi stiamo lavorando su una funzione che risolverà questo problema. Ma per ora continueremo a chiamare app Javascript non supportate.

+0

Grazie per la risposta - ci siamo resi conto che il nostro codice C# era un po 'sbagliato, quindi tutto funziona come previsto ora. – Jon

+0

C'è qualche aggiornamento su questo, sto attraversando lo stesso problema e affrontando il problema dell'origine incrociata di preflight. –