如何在Id_token中包含preferred_username声明

时间:2019-09-05 14:34:37

标签: angularjs azure-active-directory azure-ad-b2c msal

当我登录到Azure AD B2C时,没有得到id_token包含的preferred_username声明。有没有一种方法可以通过Azure门户进行配置?可以肯定的是,我会在常规的Azure AD OIDC隐式流中得到这一要求。

我尝试查看自定义声明,但似乎这应该是包含或映射到某些属性的内置声明。

2 个答案:

答案 0 :(得分:1)

这是具有B2C和MSAL库的known issue

MSAL .NET wiki中:由于社交帐户和外部身份提供商(IdP)的限制,B2C不会在IdToken中为preferred_username返回值。 Azure AD返回Preferred_username的值,因为它知道用户是谁,但对于B2C,因为用户可以使用本地帐户,Facebook,Google,GitHub等登录,所以B2C使用的值不一致为preferred_username。为了阻止MSAL推出与ADAL的缓存兼容性,我们决定在处理B2C帐户时,如果IdToken对preferred_username不返回任何内容,则在我们的终端使用“令牌响应中的丢失”。 MSAL必须返回preferred_username的值,以维护跨库的缓存兼容性。

如果要在用户界面中显示值,则应该能够使用登录提示传递用户名来预填写登录用户界面。如本MSAL .NET issue所述。

答案 1 :(得分:0)

这是Azure AD B2C的known issue

  

这是因为Azure AD B2C不在IdToken中返回值   首选用户名,因为社交限制   帐户和外部身份提供商(IdP)。AzureAD返回一个   首选用户名的值,因为它知道用户是谁,但对于   Azure AD B2C,因为用户可以使用本地帐户登录,   Facebook,Google,GitHub等。对于   用于Preferred_username的Azure AD B2C。

Here是解决方法。