首页 > 解决方案 > Azure AD B2C Github 身份提供者不提供任何声明

问题描述

我想使用 AAD B2C Github 身份提供商在我的应用程序中授权用户。要创建一个用户,我至少需要从它那里收到一封电子邮件——但我什么也没得到。我确实根据文档设置了所有内容,我可以在Name为新用户正确设置的 AAD B2C 用户列表中看到,但User Principal Name电子邮件应该是空的

这是智威汤逊的答案

{
  "typ": "JWT",
  "alg": "RS256",
  "kid": "X5eXk4xyojNFum1kl2Ytv8dlNP4-c57dO6QGTVBwaNk"
}.{
  "exp": 1611879546,
  "nbf": 1611875946,
  "ver": "1.0",
  "iss": "https://apichat.b2clogin.com/4d39cd56-4c18-4bc7-aaa8-36bf91191c8c/v2.0/",
  "sub": "dfe38752-113e-4431-b1bd-23dd53119369",
  "aud": "341eea81-859c-485c-baea-2cc9f75f6512",
  "nonce": "defaultNonce",
  "iat": 1611875946,
  "auth_time": 1611875946,
  "idp_access_token": "c5c79a8f49c44575cf127fc3c64aaa5710a0a465",
  "idp": "github.com",
  "tfp": "B2C_1_susi_debug"
}.[Signature]

我错过了什么?

添加

经过一番研究,我怀疑这里的 Github 提供者要么没有所需的范围或映射。到目前为止,我没有看到任何添加它的方法。通用 OpenID Connect 提供程序可能会解决此问题,但 Github 不支持well-known/openid-connect-discovery,我无法在 AAD B2C 中手动设置端点。

到目前为止,我还没有看到任何将 GitHub 连接到我的 AAD B2C 并收到那封该死的电子邮件的方法——为什么最大的云平台在拥有相同所有者的情况下不完全支持最大的开发存储库,这超出了我的理解。

标签: azureazure-active-directoryazure-ad-b2c

解决方案


好的,我找到的解决方案看起来像这样

  1. 设置Display NameIdentity Provider Access Token在您的用户流的应用程序声明中
  2. 在 GitHub auth 上,您将获得nameakausernameidp_access_tokenakatoken
  3. 这允许我们调用 github 用户 apicurl -u username:token https://api.github.com/user
  4. 默认情况下,用户 api 返回公共用户配置文件,该配置文件可能没有设置的电子邮件
  5. curl -u username:token https://api.github.com/user/emails将返回所有用户相关的电子邮件
  6. 我们需要第一个
{
    "email": "***@gmail.com",
    "primary": true,
    "verified": true,
    "visibility": "public"
}

推荐阅读