Ho un'API Web standard in esecuzione su un sito Web di Azure con l'autenticazione di Azure AD abilitata, durante la navigazione nell'API in un browser Sono in grado di accedere tramite il browser e accedere all'API.Richiesta API di Azure AD 401 non autorizzata
L'applicazione desktop WPF tuttavia sta ricevendo una risposta non autorizzato al momento della presentazione della richiesta:
var authContext = new AuthenticationContext(authority, new FileCache());
var accessToken = await authContext.AcquireTokenAsync(apiResourceid, clientId, redirectUri,
new PlatformParameters(PromptBehavior.Auto));
// accessToken is valid
var apiUrl = "https://example.azurewebsites.net/api/list";
var request = new HttpRequestMessage(HttpMethod.Get, apiUrl);
httpClient.DefaultRequestHeaders.Authorization = new AuthenticationHeaderValue("Bearer", accessToken.AccessToken);
var response = await httpClient.SendAsync(request);
L'autenticazione è successo e posso vedere le informazioni per l'utente durante il debug.
Non ho accesso all'account di Azure ma sono sicuro che l'applicazione di servizio AD sia configurata correttamente per consentire l'accesso all'applicazione Client AD come quando si esegue il test su un account alternativo (non configurato correttamente) il metodo AuthenticationContext.AcquireTokenAsync
non funzionava.
Ho notato che lo - (il tempo è ovviamente UTC)AuthenticationResult.ExpiresOn
è sempre nel passato ma non vedo alcun modo di estenderlo, dovrebbe essere una data futura?
Richiesta:
GET https://example.azure
websites.net/api/categorisation HTTP/1.1
Authorization: Bearer eyJ0eXAiO...
Host: example.azurewebsites.net
Risposta:
HTTP/1.1 401 Unauthorized
Content-Length: 58
Content-Type: text/html
Server: Microsoft-IIS/8.0
WWW-Authenticate: Bearer realm="example.azurewebsites.net"
X-Powered-By: ASP.NET
Set-Cookie: ARRAffinity=e35f2977dba55e6708887e762940f75c2a0fcb0a9df4e1cbe0d3f10a614c59b8;Path=/;Domain=example.azurewebsites.net
Date: Fri, 08 Jul 2016 07:51:13 GMT
You do not have permission to view this directory or page.
Aggiornamento:
ho ricreato l'ambiente in un conto Azure ho accesso a e ancora ricevere una risposta non autorizzata (funziona bene in un browser).
È possibile inserire il codice nei siti Web Startup.Auth.cs impostando l'autenticazione di Azure AD? Oppure, se si utilizza l'opzione "Autenticazione/Autorizzazione" nei siti Web di Azure, è possibile condividere i valori/le impostazioni configurate? – Saca
Inoltre, su questo: "L'autenticazione ha esito positivo e posso vedere le informazioni utente durante il debug.", Stai dicendo che quando si esegue l'applicazione WPF con Visual Studio ci si connette all'API, ma quando si esegue da exe non lo fa t? Se sì, ti viene richiesto quando esegui l'exe? – Saca
@Saca l'API utilizza l'autenticazione dei siti Web di Azure con. Il provider è "Directory attiva di Azure" che viene configurata utilizzando la modalità di gestione rapida, l'app di Azure AD è impostata sull'applicazione Servizio Web di Active Directory. – Anth12