客户端上的Asp.net核心azure b2c cookie身份验证

时间:2018-06-04 13:15:03

标签: c# asp.net azure uwp azure-ad-b2c

我有一个用asp.net核心编写的web api,并使用Azure AD B2C进行身份验证。浏览器中的一切工作正常:带有[Authorize]属性的端点需要登录,因此浏览器会将我重定向到Azure登录页面,在我登录后,我从api得到了答案。

对于客户我正在建立一个UWP应用程序。我设法使用Microsoft.Identity.Client Nuget包获取访问令牌,但我无法使用令牌发送请求。我每次尝试都会遇到异常(我在下面的客户端代码中抛出):

  

System.Runtime.InteropServices.COMException(0x80072F88):HTTP   重定向请求必须由用户确认   System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(任务   任务)   System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(任务   任务)   System.Net.Http.HttpHandlerToFilter.d__4.MoveNext()---结束   抛出异常的先前位置的堆栈跟踪---   在System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(任务   任务)   System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(任务   任务)在System.Net.Http.HttpClientHandler.d__86.MoveNext()

如果我从端点中删除[Autherize]属性,它就可以正常工作。

我的服务器端代码:

Startup.cs - > ConfigureServices:

services.AddAuthentication(sharedOptions =>
        {
            sharedOptions.DefaultScheme = CookieAuthenticationDefaults.AuthenticationScheme;
            sharedOptions.DefaultChallengeScheme = OpenIdConnectDefaults.AuthenticationScheme;
        })
        .AddAzureAdB2C(options => { Configuration.Bind("AzureAdB2C", options); })
        .AddCookie();

所以我使用Cookie身份验证方案。但是从客户端我无法正确附加访问令牌。

我的客户代码:

var httpClient = new HttpClient();
        HttpResponseMessage response;
        try
        {

            var request = new HttpRequestMessage(HttpMethod.Delete, uri);
            request.Headers.Add("Cookie", ".AspNetCore.Cookies=" + token);
            //request.Headers.Authorization = new AuthenticationHeaderValue("Bearer", token);
            response = await httpClient.SendAsync(request);
            if (response.StatusCode != System.Net.HttpStatusCode.NoContent)
            {
                throw new Exception();
            }
        }
        catch (Exception ex)
        {
            throw new Exception();
        }

登录在UWP中完美运行,但在此之后我无法对授权端点执行任何操作。

那么我应该如何将访问令牌附加到我的http请求以使用给定的方案正确授权?

0 个答案:

没有答案