[英]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.