azure - 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 并收到那封该死的电子邮件的方法——为什么最大的云平台在拥有相同所有者的情况下不完全支持最大的开发存储库,这超出了我的理解。
解决方案
好的,我找到的解决方案看起来像这样
- 设置
Display Name
并Identity Provider Access Token
在您的用户流的应用程序声明中 - 在 GitHub auth 上,您将获得
name
akausername
和idp_access_token
akatoken
- 这允许我们调用 github 用户 api
curl -u username:token https://api.github.com/user
- 默认情况下,用户 api 返回公共用户配置文件,该配置文件可能没有设置的电子邮件
curl -u username:token https://api.github.com/user/emails
将返回所有用户相关的电子邮件- 我们需要第一个
{
"email": "***@gmail.com",
"primary": true,
"verified": true,
"visibility": "public"
}
推荐阅读
- apache-spark - 在本地模式下,打印语句不会在 spark/scala 中产生输出
- gcc - 用一条指令获取 16 个字节作为数据真的比每次执行四个 4 个字节的立即存储更优化吗?
- python - 慢熊猫 DataFrame MultiIndex 重新索引
- javascript - 这个数字在 mdn 浏览器支持部分的意思
- node.js - Nodejs - 确定客户端http请求网络接口
- javascript - HTML、JS、CSS 按钮无法正常工作
- javascript - 限制用户从具有相同值的两组中仅选择一个单选按钮
- node.js - 如何使用节点在命令行中获取当前项目名称?
- openrefine - 当它们编码多个“记录”时如何转置列?
- apache-kafka - Kafka Stream ProcessorContext 有 null ProcessorRecordContext