没有电子邮件,Azure AD B2C的响应?

时间:2018-05-29 18:19:26

标签: oauth-2.0 azure-ad-b2c

我在Azure中设置了一个新的B2C租户,并且我使用oauth2_proxy(更具体的:docker-oauth2_proxy)对其进行身份验证。

需要配置自定义登录URL,但登录过程本身正在运行:

        - name: OAUTH2_PROXY_LOGIN_URL
          value: https://login.microsoftonline.com/tfp/<my-tenant-name>.onmicrosoft.com/b2c_1_policy/oauth2/v2.0/authorize
        - name: OAUTH2_PROXY_REDEEM_URL
          value: https://login.microsoftonline.com/tfp/<my-tenant-name>.onmicrosoft.com/b2c_1_policy/oauth2/v2.0/token

但是,在我重定向回https://my-app.example.com后,我收到了错误消息:

oauthproxy.go:527: error redeeming code missing email

我试着查看我收到的令牌,但无法通过https://jwt.ms对其进行解码。

由于我不知道其中究竟包含了什么内容,因此我不愿意在此处发布,但它确实以eyJraWQi...开头,{"kid":"cpimcore_09252015","ver":"1.0","zip":"Deflate","ser":"1.0"}可以基本64位解码为{{1} }

答复的完整格式为:

/oauth2/callback?state=a0d367fd2d7337b8fbae8d72052022c7%3a%2f&code=eyJraWQiOiJjcGltY29yZV8wOTI1MjAxNSIsInZlciI6IjEuMCIsInppcCI6IkRlZmxhdGUiLCJzZXIiOiIxLjAifQ..[base64*16].[base64*568].[base64*22]

其中[base64*n]表示一串n个字符,看起来像基本的64位编码数据。

有关如何解码该令牌的任何想法?

2 个答案:

答案 0 :(得分:3)

您无法解码颁发给/oauth2/callback的授权码,因为它已加密。

oauth2_proxy's Azure AD provider预计会发出邮件 otherMails 声明。 Azure AD会发出此问题,但Azure AD B2C不会发布它。 Azure AD B2C发出电子邮件声明。

您可能必须修改此Azure AD提供程序以匹配电子邮件声明。

答案 1 :(得分:1)

不知道这是否仍然与您相关,Azure AD B2C本质上使用标准的OpenID Connect,但是您还需要提供策略作为附加参数。

我们还需要将Azure AD B2C与oauth2_proxy一起使用,因此我们修改了oauth2_proxy通用oidc提供程序,以便可以将B2C策略用作附加配置选项。

如果需要,请尝试:https://github.com/karrieretutor/oauth2_proxy#microsoft-azure-ad-b2c

如果您是从源代码构建的,请注意,您还需要使用我们的分叉的“ go-oidc”软件包(oauth2_proxy依赖于此软件包,但已对发行者URL进行了部分硬编码,因此我们也必须对此进行更改,包括B2C政策)。看一下Dockerfile,这可以正确地构建它。