ottengo due SID diverso per lo stesso utente quando l'utente accede attraverso un'Azure Web App (ASP.NET MVC) e Xamarin.iOS appAzure Mobile Service e Azure Web App autenticazione
Setup
Azure WebApp ASP.NET 5 con controller API
Xamarin iOS App con Microsoft.WindowsAzure.Mobile.Client SDK Azure B2C AAD
utente sul Web
ottengo il valore Object Identifier che è l'AAD SID:
var userClaim = ClaimsPrincipal.Current.FindFirst("http://schemas.microsoft.com/identity/claims/objectidentifier").Value;
utente su mobile
ottengo solo un valore Nameidentifier e nessun Object Identifier
ClaimsPrincipal mobileUser = this.User as ClaimsPrincipal;
var mobileUserClaim = mobileUser.FindFirst("http://schemas.xmlsoap.org/ws/2005/05/identity/claims/nameidentifier");
Il SID è completamente diverso, il SID per l'utente autenticato da Mobile ottiene SID: xxxx mentre da Web ottiene xxx
So che se si installa un'app mobile di Azure e una app Web di Azure il SID è lo stesso durante l'autenticazione. Ma non voglio gestire due siti per la dimensione (piccola) della mia app. Lo scopo dell'App è di avere un'app Web semplice per eseguire alcune azioni e le stesse azioni sul telefono, dal telefono utilizzo l'SDK di Servizio mobile di Azure e InvokeAPIAsync per utilizzare il controller API nell'app Web.
Grazie
Grazie per aver dedicato del tempo per rispondere. Ho testato il tuo esempio con l'utilizzo del sovraccarico LoginAsync con Token, ma ho usato invece bearer o access_token. Ci sto provando stasera. Grazie – JCB
Un'altra domanda: se utilizzo ADAL dal client (app iOS), posso utilizzare AAD AccessToken recuperato per autenticare l'utente contro la mia API WebApp? Ho provato questo. dove authResult.AccessToken è il token di accesso AAD tramite ADAL. Ma non sono mai riuscito ad autenticarmi contro la mia API WebApp, non autorizzato. Il parametro è sbagliato, invece di Bearer, dovrebbe forse access_token? Ci proverei stasera. Client HttpClient = new HttpClient(); client.DefaultRequestHeaders.Authorization = new AuthenticationHeaderValue ("Bearer", authResult.AccessToken); – JCB
@JCB Ci scusiamo per il ritardo. No, il token di accesso AAD non può essere utilizzato per l'autenticazione con WebApp. È necessario scambiarlo con un token AppService. In particolare, guarda ancora l'overload di LoginAsync() che ho menzionato alla fine del mio post. Il risultato sarà un token del servizio app. – Aziel