当我登录到Azure AD B2C时,没有得到id_token包含的preferred_username声明。有没有一种方法可以通过Azure门户进行配置?可以肯定的是,我会在常规的Azure AD OIDC隐式流中得到这一要求。
我尝试查看自定义声明,但似乎这应该是包含或映射到某些属性的内置声明。
答案 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是解决方法。