我在Azure AD B2C中使用自定义策略来指定自定义提供程序(在本例中为GitHub OAuth)。如果电子邮件声明包含类似于" email":null的内容,则电子邮件声明会在Azure AD B2C中引发内部服务器错误。我验证了这是使用App Insights跟踪日志的值,其中包含来自GitHub的完整OAuth响应。但是,它总是在自我断言的步骤上失败。
以下是跟踪日志的摘录:
"GitHub-OAUTH": {
"ContentType": "Json",
"Created": "2018-01-05T01:33:49.5316319Z",
"Key": "GitHub-OAUTH",
"Persistent": true,
"Value": "{\"id\":1234,<snip>\"email\":null,<snip>,\"{oauth2:access_token}\":\"mytoken\"};2;GitHub-OAUTH;False"
},
"Complex-CLMS": {
"gitHubUserId": "1234",
"displayName": "My Name",
"githubEmail": "Null",
"identityProvider": "github.com",
"authenticationSource": "socialIdpAuthentication",
"upnUserName": "1234",
"userPrincipalName": "cpim_1234@apollohackfest.onmicrosoft.com",
"socialIdpUserId": "1234",
"alternativeSecurityId": "{\"type\":6,\"identityProvider\":\"github.com\",\"key\":\"abcdefg=\"}"
}
如果电子邮件地址是电子邮件:&#34; myemail@site.com",则登录正常。或者,如果OAUTH提供程序根本没有返回电子邮件字段,它也可以正常工作。这只会在电子邮件的情况下中断:null。
当提供商提供空结果时,我不希望存在内部服务器错误。当发生这种情况时,是否有可用于删除电子邮件声明的声明转换?