C# Asp.Net核心Web Api中的Azure广告挑战;我自己的JWT持有人
我需要先注册Azure AD,然后从JWT令牌(令牌数据段中包含的邮件/名称/组等)获取用户信息,这是我在登录时获得的,并在WebApi中进行验证 然后检查邮件是否已注册:C# Asp.Net核心Web Api中的Azure广告挑战;我自己的JWT持有人,c#,asp.net,authentication,jwt,azure-active-directory,C#,Asp.net,Authentication,Jwt,Azure Active Directory,我需要先注册Azure AD,然后从JWT令牌(令牌数据段中包含的邮件/名称/组等)获取用户信息,这是我在登录时获得的,并在WebApi中进行验证 然后检查邮件是否已注册: 如果不是:使用内部api UserManager创建新帐户 如果是:登录用户并使其从内部WebApi承载(服务)获得JWT令牌 关键是要在JS前端去掉Azure AD JWT令牌。一旦用户单击“使用Azure AD登录”按钮,后端应该像我前面描述的那样采取行动。 成功登录后,前端应使用我的Web Api生成JWT令牌,以
- 如果不是:使用内部api UserManager创建新帐户
- 如果是:登录用户并使其从内部WebApi承载(服务)获得JWT令牌
services.AddAuthentication()
.AddJwtBearer(“InnerJwt”,选项=>
{
})
.AddJwtBearer(“AzureJwt”,选项=>
{
var authSettings=Configuration.GetSection(“AzureAd”).Get();
options.Audience=authSettings.ClientId;//配置[“AzureAd:ClientId”];
options.Authority=authSettings.Authority;//配置[“AzureAd:Authority”];
});
//clientId、租户和授权机构已在appsettings.json文件中等待
services.AddAuthorization(选项=>
{
options.DefaultPolicy=新授权PolicyBuilder()
.RequireAuthenticatedUser()文件
.AddAuthenticationSchemes(“InnerJwt”)
.Build();
options.AddPolicy(“内部”,新的AuthorizationPolicyBuilder()
.RequireAuthenticatedUser()文件
.AddAuthenticationSchemes(“InnerJwt”)
.Build());
options.AddPolicy(“Azure”,新授权PolicyBuilder())
.RequireAuthenticatedUser()文件
.AddAuthenticationSchemes(“AzureJwt”)
.Build());
});
我遇到的一个错误是Challange()
公共任务登录()
{
回击(
新的AuthenticationProperties{RedirectUri=”“},
“AzureJwt”);
}
即使我正在使用Microsoft.AspNetCore.{Mvc,Authentication}和这些包的最新引用,也无法识别该方法-我不明白
编辑:
好吧,我太蠢了,忘了从ControllerBase继承那个控制器,因此ControllerBase.Challenge()方法没有重新编码。
现在它可以工作了,但当我设法按正确的路线“调用”此操作时,它会在我的web浏览器中返回一个401未授权错误,而不是将我引导到Azure AD sing in站点:/
我应该换一种方式吗
希望这是我想要实现的足够信息,如果没有,我会在以后添加它
感谢您抽出时间……您能解决这个问题吗?