AspNetCore Web Api Microsoft Account Authentication AspNetCore Web Api 是一个使用微软账户进行身份验证的身份验证方法。

8 浏览
0 Comments

AspNetCore Web Api Microsoft Account Authentication AspNetCore Web Api 是一个使用微软账户进行身份验证的身份验证方法。

我最基本的要求是一个暴露一些REST资源的Web Api。访问任何资源都需要身份验证,我希望使用Microsoft帐户进行身份验证。这将是一个用于编程访问的Web Api。

我已经开始了这个过程:https://learn.microsoft.com/en-us/aspnet/core/security/authentication/social/microsoft-logins?view=aspnetcore-2.2

并已经完成了。它可能工作正常,但是我遇到了这个错误:

InvalidOperationException: 默认的身份验证UI布局需要一个名为“_LoginPartial”的局部视图,通常位于“/Pages/_LoginPartial”或“/Views/Shared/_LoginPartial”。

但是我不想要一个带有登录体验的UI。我希望应用程序(以及来自浏览器等客户端的用户)通过Microsoft进行身份验证,然后访问我的REST资源。

我的配置服务看起来像这样:

        services.AddIdentity()
                .AddDefaultTokenProviders()
                //.AddDefaultUI(UIFramework.Bootstrap4)
                .AddEntityFrameworkStores();
        services.AddAuthentication().AddMicrosoftAccount(microsoftOptions =>
        {
            microsoftOptions.ClientId = _config["Authentication:Microsoft:ApplicationId"];
            microsoftOptions.ClientSecret = _config["Authentication:Microsoft:Password"];
        });

然后:

    public void Configure(IApplicationBuilder app, IHostingEnvironment env)
    {
        if (env.IsDevelopment())
        {
            app.UseDeveloperExceptionPage();
        }
        app.UseStaticFiles();
        app.UseAuthentication();

程序只是这样做:

    public static IWebHostBuilder CreateWebHostBuilder(string[] args) =>
        WebHost.CreateDefaultBuilder(args)
            .UseStartup()
            .UseUrls("http://localhost:5000", "https://localhost:5001");

0
0 Comments

AspNetCore Web Api Microsoft Account Authentication问题的出现原因是在同一个应用程序中同时实现了Microsoft身份验证和登录过程,这种解决方案会为ASP.NET生成一个cookie。然而,客户端可能希望通过OAuth传递一个Bearer Token进行身份验证。

解决方法是使用JwtBearer令牌验证。在这种情况下,应用程序不提供身份验证的用户界面(就像示例中的那样),而是仅验证/认证接收到的令牌。

以下是一些参考链接:

- [AspNetCore中的JWT验证和授权](https://blogs.msdn.microsoft.com/webdev/2017/04/06/jwt-validation-and-authorization-in-asp-net-core/)

- [AspNetCore中的JWT验证](https://stackoverflow.com/questions/40281050)

- [AspNetCore中的令牌认证](https://developer.okta.com/blog/2018/03/23/token-authentication-aspnetcore-complete-guide)

- [AspNetCore中的JWT身份验证](https://pioneercode.com/post/authentication-in-an-asp-dot-net-core-api-part-3-json-web-token)

感谢你的提问。是否有办法使实际的令牌获取过程在后台进行,或者客户端需要自己联系授权服务器获取令牌?你知道有没有适用于从Azure AD获取令牌的好的.NET客户端库?我找到一些关于使用services.AddAuthentication(AzureADDefaults.BearerAuthenticationScheme)的信息。

不幸的是,客户端需要自己获取令牌,然后将其添加到标头或正文中。我建议你阅读有关OAuth2的相关内容,以更好地理解参与者和流程。

0