Mam standardowe API internetowe działające w witrynie Azure z włączoną funkcją uwierzytelniania Azure AD, podczas przeglądania interfejsu API w przeglądarce mogę zalogować się przez przeglądarkę i uzyskać dostęp do interfejsu API.Żądanie API Azure AD 401 Nieautoryzowane
Aplikacja pulpitu WPF jednak odbiera odpowiedź Nieuprawnione przy składaniu wniosku:
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);
Uwierzytelnianie jest udana i widzę Informacja o użytkowniku podczas debugowania.
Nie mam dostępu do konta Azure, ale jestem pewien, że aplikacja Service AD jest poprawnie skonfigurowana, aby umożliwić dostęp do aplikacji AD klienta, ponieważ podczas testowania na alternatywnym koncie (niepoprawnie skonfigurowanym) nie udała się metoda AuthenticationContext.AcquireTokenAsync
.
Zauważyłem, że - (Czas jest UTC oczywiście)AuthenticationResult.ExpiresOn
jest zawsze w przeszłości, ale nie widzę sposobu na przedłużenie go, czy to będzie w przyszłości?
Zapytanie:
GET https://example.azure
websites.net/api/categorisation HTTP/1.1
Authorization: Bearer eyJ0eXAiO...
Host: example.azurewebsites.net
Response:
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.
Aktualizacja:
Mam odtworzył środowisko w Azure koncie mam dostęp do i nadal otrzymujesz nieautoryzowaną odpowiedź (działa dobrze w przeglądarce).
Czy możesz umieścić kod w swoich witrynach Startup.Auth.cs konfiguruje uwierzytelnianie Azure AD? A może używasz opcji "Uwierzytelnianie/autoryzacja" na stronach internetowych Azure, czy możesz udostępnić skonfigurowane wartości/ustawienia? – Saca
Ponadto: "Uwierzytelnianie zakończyło się pomyślnie i widzę informacje o użytkowniku podczas debugowania.", Czy mówisz, że podczas uruchamiania aplikacji WPF w Visual Studio pomyślnie łączysz się z interfejsem API, ale podczas uruchamiania z programu exe nie działa ' t? Jeśli tak, czy pojawia się monit, gdy uruchomisz .exe? – Saca
@Saca API używa uwierzytelniania witryn internetowych Azure z. Dostawca to "Azure Active Directory" skonfigurowany w trybie Express Management, aplikacja Azure AD jest ustawiona na aplikację AD Web Service. – Anth12