AspNetCore Web Api Microsoft帐户身份验证

时间:2019-01-04 10:58:32

标签: c# asp.net-core oauth-2.0

我的基本要求是公开一些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.

但是我不希望用户界面具有登录体验。我希望应用程序(以及来自客户端(例如浏览器)的用户)通过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");

1 个答案:

答案 0 :(得分:1)

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

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

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

这里有一些参考资料

jwt auth in asp.net core
jwt validation
token authenticationin Asp.NET
Authentication in ASP.NET Core JWT

相关问题