代码之家  ›  专栏  ›  技术社区  ›  user3151902

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

  •  1
  • user3151902  · 技术社区  · 7 年前

    我在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... ,可以对其进行base-64解码 {"kid":"cpimcore_09252015","ver":"1.0","zip":"Deflate","ser":"1.0"}

    回复的完整格式为:

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

    在哪里? [base64*n] 指示字符串 n 类似于base 64编码数据的字符。

    关于如何破译那个标记有什么想法吗?

    2 回复  |  直到 7 年前
        1
  •  3
  •   Chris Padgett    7 年前

    无法解码颁发给的授权代码 /oauth2/callback 因为它是加密的。

    oauth2_proxy's Azure AD provider 期望 邮件 其他邮件 将要发出的索赔。Azure广告发布此消息,但Azure广告B2C不发布此消息。Azure AD B2C发布 电子邮件 索赔。

    您可能需要修改此Azure AD提供程序以匹配 电子邮件 索赔。

        2
  •  1
  •   Marcel D. Juhnke    7 年前

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

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

    如果你愿意,试试看: https://github.com/karrieretutor/oauth2_proxy#microsoft-azure-ad-b2c

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

    推荐文章