我的基本要求是公开一些REST资源的Web Api。访问任何资源都需要身份验证,我希望通过Microsoft帐户进行身份验证。这将是用于编程访问的Web API。
到最后。除非我明白了,否则它可能工作正常:
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");
答案 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