AspNetCore Web Api Microsoft Account Authentication AspNetCore Web Api 是一个使用微软账户进行身份验证的身份验证方法。
AspNetCore Web Api Microsoft Account Authentication AspNetCore Web Api 是一个使用微软账户进行身份验证的身份验证方法。
我最基本的要求是一个暴露一些REST资源的Web Api。访问任何资源都需要身份验证,我希望使用Microsoft帐户进行身份验证。这将是一个用于编程访问的Web Api。
并已经完成了。它可能工作正常,但是我遇到了这个错误:
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");
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的相关内容,以更好地理解参与者和流程。