当前位置: 首页 > 知识库问答 >
问题:

如何在.NET核心(缺少BootstrapContext)中执行代表身份验证?

詹弘毅
2023-03-14

我已经在.NET4.5中运行了代表示例:

var bootstrapContext = ClaimsPrincipal.Current.Identities.First().BootstrapContext as System.IdentityModel.Tokens.BootstrapContext;
System.Security.Claims.ClaimsIdentity identity = 
    User.Identity as System.Security.Claims.ClaimsIdentity;
string userAccessToken = identity.BootstrapContext as string;
string userName = (User.FindFirst(ClaimTypes.Upn))?.Value;

但是对于不同租户(多租户身份验证)中的用户,userAccessToken和userName设置为NULL。要使来自不同租户的用户工作,我需要做什么不同的操作?

共有1个答案

艾哲
2023-03-14

我发现userAccessToken和userName返回为null的原因是在Startup.cs中调用UseJwtBearerAuthentication时丢失了SaveSigninToken参数:

app.UseJwtBearerAuthentication(new JwtBearerOptions
{
    AutomaticAuthenticate = true,
    AutomaticChallenge = true,
    Authority = String.Format(CultureInfo.InvariantCulture, Configuration["Authentication:AzureAd:AADInstance"], Configuration["Authentication:AzureAd:Tenant"]),
    Audience = Configuration["Authentication:AzureAd:Audience"],
            TokenValidationParameters = new TokenValidationParameters { SaveSigninToken = true, ValidateIssuer = false }
});

如果没有SaveSigninToken=true,则调用方的访问令牌和标识在调用方来自另一租户的情况下不会流通。

 类似资料:
  • 凭据正确。5.7.57 SMTP-客户端未通过身份验证以发送邮件,535 5.7.139身份验证不成功 在中使用SMTP发送电子邮件时返回此错误。网 此应用程序部署在Azure中不确定是什么导致了问题,之前它正在工作,突然停止了。 已尝试使用交换服务器抛出401未授权错误。

  • 更新:visualstudio-File-New-Project-ASP。NET核心Web应用程序(.NET核心)-Web应用程序 我保留了默认名称WebApplication1 > 展开www root文件夹 向上扩展到www root/lib/jquery-验证 下面的文字是在我更新这个Q之前 我在VS2015CE中创建了一个空的ASP. NET Core MVC Web应用程序。我添加了bo

  • 我的问题和这个差不多。 ASP。Net Core与EF Core和CosmosDB-身份问题 提供的答案不起作用。这会产生其他问题。当我从升级我的应用程序时,这些错误开始出现。NET Core 3.1 to。净5。降级应用程序使所有错误都消失了。显然,这个问题与efcore 5中引入的对cosmos的乐观并发支持有关。 https://docs.microsoft.com/en-us/ef/cor

  • 我正在开发ASP NET核心Web API,对认证方式的选择感到困惑。我曾经应用默认的Asp Net身份验证,但最近我知道了JWT。因此,我几乎像本文中一样实现了身份验证:https://stormpath.com/blog/token-authentication-asp-net-core。但是我不能理解这个JWT的好处。通过简单的Asp Net身份认证,我不关心令牌存储等,我只需要用signI