繁体   English   中英

AspNetCore Web Api 微软账户认证

[英]AspNetCore Web Api Microsoft Account Authentication

我的基本要求是一个公开一些 REST 资源的 Web Api。 访问任何资源都需要身份验证,我希望通过 Microsoft 帐户实现。 这是一个用于编程访问的 Web api。

我沿着这条路开始: https : //docs.microsoft.com/en-us/aspnet/core/security/authentication/social/microsoft-logins?view=aspnetcore-2.2

并且已经到了最后。 它可能工作正常,除非我得到这个:

InvalidOperationException: The default Identity UI layout requires a partial view '_LoginPartial' usually located at '/Pages/_LoginPartial' or at '/Views/Shared/_LoginPartial' to work.

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

我的配置服务如下所示:

        services.AddIdentity<IdentityUser, IdentityRole>()
                .AddDefaultTokenProviders()
                //.AddDefaultUI(UIFramework.Bootstrap4)
                .AddEntityFrameworkStores<IdentityDbContext>();
        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<Startup>()
            .UseUrls("http://localhost:5000", "https://localhost:5001");

您已经在同一个应用程序中实现了 Microsoft 身份验证登录过程,这种解决方案会为 ASP.NET 生成一个cookie

您可能希望客户端通过OAuth进行身份验证,并传递一个Bearer Token
在这种情况下,您必须使用JwtBearer令牌身份验证。

在这种情况下,您的应用程序提供用于身份验证的 UI(如示例),而是仅验证/验证收到的令牌。

这里有一些参考

asp.net核心中的jwt身份验证
jwt 验证
Asp.NET中的令牌认证
ASP.NET Core JWT 中的身份验证

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM