【发布时间】:2017-11-16 03:14:40
【问题描述】:
我正在尝试删除我从 Azure AD B2C 获得的 email 声明中的括号。
用户登录后,我解码用户的令牌并从中获取电子邮件。但是我收到的电子邮件中有括号。电子邮件看起来像这样["email@email.com"],当我将它保存到数据库时,它变得很丑。
是否有一些设置可以从电子邮件声明中删除括号?
JObject ParseIdToken(string idToken)
{
// Get the piece with actual user info
idToken = idToken.Split('.')[1];
idToken = Base64UrlDecode(idToken);
return JObject.Parse(idToken);
}
private string Base64UrlDecode(string s)
{
s = s.Replace('-', '+').Replace('_', '/');
s = s.PadRight(s.Length + (4 - s.Length % 4) % 4, '=');
var byteArray = Convert.FromBase64String(s);
var decoded = Encoding.UTF8.GetString(byteArray, 0, byteArray.Count());
return decoded;
}
public void CacheUser(AuthenticationResult ar)
{
JObject user = ParseIdToken(ar.IdToken);
var cache = new CachedUsers
{
FullName = user["name"]?.ToString(),
Email = user["emails"]?.ToString()
};
BlobCache.LocalMachine.InsertObject("usercached", cache);
}
这是我获取电子邮件的代码。为什么电子邮件有括号?我想问题不在我的代码中,但可能是 Azure AD B2C 中的某些设置使它成为这样,因为当我尝试从 https://jwt.io/ 解码令牌时,它返回相同的,带括号的电子邮件。有人经历过吗?
您可以看到姓名和电子邮件之间的区别。电子邮件有像[ ] 这样的括号,我想知道的是如何删除这些括号并使其像名称一样。因为当我收到 Xamarin 表单中的电子邮件时,它也有这些括号,所以不是emailname@gmail.com,而是像这样["emailname@gmail.com"]
【问题讨论】:
-
有点难以理解你在说什么。您能否分享一个示例令牌并指出您希望在其中看到的不同之处?
-
我更新了我的问题,你能解决这个问题吗?谢谢
-
这是您要查找的内容:user["emails"]?.FirstOrDefault()?.ToString()
标签: c# azure-ad-b2c