我正在尝试使用内置的用户属性和声明从Azure B2C检索一些非常基本的信息。
我只是想回来
使用下面的代码,我试图返回上述4个声明,但仅返回
我已经使用了JWT. IO来测试返回令牌,我正在寻找的声明就在那里。
我希望不必单独调用图形应用编程接口来获得我想要的2-3个字段。
我只是希望有人能帮我澄清我的代码哪里出了问题。
var claimsIdentity = (ClaimsIdentity)HttpContext.User.Identity;
var userIdClaim = claimsIdentity.Claims.SingleOrDefault(c => c.Type == ClaimTypes.NameIdentifier);
if (userIdClaim != null)
{
userId = userIdClaim.Value;
ViewData["userId"] = userId;
}
var GivenNameClaim = claimsIdentity.Claims.SingleOrDefault(c => c.Type == ClaimTypes.GivenName);
if (GivenNameClaim != null)
{
GivenName = GivenNameClaim.Value;
ViewData["GivenName"] = GivenName;
}
var SurNameClaim = claimsIdentity.Claims.SingleOrDefault(c => c.Type == ClaimTypes.Surname);
if (SurName != null)
{
SurName = SurNameClaim.Value;
ViewData["Surname"] = SurName;
}
var EmailClaim = claimsIdentity.Claims.SingleOrDefault(c => c.Type == ClaimTypes.Email);
if (Email != null)
{
Email = EmailClaim.Value;
ViewData["Email"] = Email;
}
编辑
将以下内容添加到我的视图中有所帮助...
@foreach (Claim claim in User.Claims)
{
<tr>
<td>@claim.Type @claim.Subject</td>
<td>@claim.Value</td>
</tr>
}
它返回
因此,我已将我的电子邮件更新到belwo,它现在适用于3/4文件,它不会返回电子邮件集合。
var Claims = User.Claims;
var SurNameClaim = Claims.SingleOrDefault(c => c.Type == ClaimTypes.Surname);
ViewData["Surname"] = SurNameClaim.Value;
var GivenNameClaim = Claims.SingleOrDefault(c => c.Type == ClaimTypes.GivenName);
ViewData["GivenName"] = GivenNameClaim.Value;
var ClientIdClaim = Claims.SingleOrDefault(c => c.Type == ClaimTypes.NameIdentifier);
ViewData["ClientId"] = ClientIdClaim.Value;
var EmailClaim = Claims.SingleOrDefault(c => c.Type == ClaimTypes.Email);
if (EmailClaim != null)
{
ViewData["Email"] = EmailClaim.Value;
}
else
{
ViewData["Email"] = "Is Null";
}
用户属性是aad B2C从用户收集的信息。所以B2C只收集一封电子邮件,“电子邮件地址”是一个字符串。索赔是B2C返回给依赖方应用程序的信息。由于此处可能有多封电子邮件(来自多个资源,如联合Idp),因此这是一个集合。
您可以查看示例应用程序以了解如何解析声明https://github.com/Azure-Samples/active-directory-b2c-dotnet-webapp-and-webapi/blob/master/TaskService/Controllers/TasksController.cs
如何读取值为数组的声明
List<string> emails = new List<string>();
IEnumerable<Claim> emailClaims = Claims.Where(c => c.Type == ClaimTypes.Email);
if (emailClaims.Any())
{
// get the roles' actual value
foreach (Claim claim in emailClaims)
{
emails.Add(claim.Value);
}
}
我正在使用maven项目进行UI自动化,我需要在多个环境和多个浏览器中运行一些测试。我已经创建并添加了pom.xml文件,并声明了其中的属性。但是当我通过终端执行它时,我得到了错误。我用的命令- 错误-[信息]扫描项目...[ERROR][ERROR]处理POM时遇到一些问题:[FATAL]不可解析POM d:\work\cucumber_projects\ui-automation-projec
问题内容: 如何在Python中声明静态属性? 这里写了我如何声明一个方法: Python中的静态方法? 问题答案: 在Python的类级别定义的所有变量均被视为静态 在类中,您可以使用相同的名称拥有两个不同的变量(一个静态变量和一个普通变量)。不要困惑。
我正在尝试从Twitter检索数据,使用Tweepy作为在命令行中键入的用户名。我想提取相当多关于状态和用户的数据,所以想出了以下内容: 请注意,我正在导入所有必需的模块,并且具有oauth键(只是此处未包含)并且文件名正确,刚刚更改: 我希望最终遍历用户的所有推文(最多3200条限制)。不过,首先要做的是。到目前为止,尽管我有两个问题,但我收到了以下关于转发的错误消息: 将用户名作为变量传递似乎
问题内容: 我的Jenkins 2.19.4使用管道:声明式代理程序API 1.0.1。如果您无法定义变量来分配读取的属性,那么如何使用readProperties? 例如,要捕获SVN版本号,我目前以脚本样式使用以下代码捕获它: 然后我可以使用: 由于以声明式定义svnProp是不合法的,因此如何使用readProperties? 问题答案: 您可以使用标记内的步骤来运行任意管道代码。 所以符合
问题内容: Java中的ArrayList或List声明质疑并回答了如何声明为空,但是如何声明带有值的ArrayList? 我尝试了以下操作,但返回语法错误: 问题答案: 在Java 9+中,您可以执行以下操作: Java 8使用: 当然,您可以使用接受一个的构造函数创建一个新对象: 提示:文档中包含非常有用的信息,这些信息通常包含您要查找的答案。例如,以下是该类的构造函数: 构造一个初始容量为1
我遵循Microsoft的指导,通过Azure ADB2C启用Dynamics Portal访问。基础设施已经启动并运行良好。我使用的是"登录"政策。但是,我在声明映射功能上遇到了麻烦。 我已经根据下面链接的文档中的说明配置了以下站点设置。 身份验证/OpenIdConnect/B2C/RegistrationClaimsMapping身份验证/OpenIdConnect/B2C/LoginCla