向Azure B2C客户端凭据流添加自定义声明

z0qdvdin  于 2023-03-03  发布在  其他
关注(0)|答案(2)|浏览(128)

我已将b2c配置为客户端凭据流的授权服务器,我希望向令牌添加声明,以便可以使用策略将其发送到APIM中的后端服务。但我找不到向令牌添加此额外声明的方法,以便可以在APIM上使用它。注意:使用授权代码流是可能的,但是当使用客户端凭据时,声明不通过请求传递。
有没有办法达到这个目标?

31moq8wy

31moq8wy1#

你无法使用Azure AD client_credential flow进行声明自定义。我们将发布Azure AD B2C客户端凭据流,将来该凭据流将允许使用自定义策略(类似于授权代码流)进行声明自定义。

7xllpg7q

7xllpg7q2#

面对这个问题,我自己记录了达到这个目标的步骤。

1照常设置资源应用程序和客户端

因此,首先,按如下所述配置客户端凭据流:https://learn.microsoft.com/en-us/azure/active-directory-b2c/client-credentials-grant-flow?pivots=b2c-custom-policy
这是非常直接的,直到(包括)步骤3。关于步骤3:注意这一行:
替换为用户流或自定义策略的全名。**注意,所有类型的用户流和自定义策略都支持客户端凭据流。**你可以使用现有的任何用户流或自定义策略,也可以创建新的用户流或自定义策略,如注册或登录。
它注意到所有用户流都支持client_credentials,但是,当以用户流为目标时,API连接器(通常可用于丰富令牌)将不会被调用。

2准备自定义策略

documentation一样,设置签名和加密密钥:

创建签名密钥
  • 选择策略密钥,然后选择添加。
  • 对于选项,选择生成。
  • 在名称中,输入令牌签名密钥容器。前缀B2C_1A_可能会自动添加。
  • 选择RSA作为"密钥类型"。
  • 对于密钥用法,选择签名。选择创建。
创建加密密钥
  • 选择策略密钥,然后选择添加。
  • 对于选项,选择生成。
  • 在名称中,输入令牌加密密钥容器。前缀B2C_1A_可能会自动添加。
  • 选择RSA作为"密钥类型"。
  • 对于密钥使用,选择加密。
  • 选择创建。
上载基本策略

从入门包安装基本策略,另请参见github
有几个类似的文件,但是LocalAccounts下的文件足以丰富JWT。
请确保将租户名称替换为您的名称。
将这些策略上载到自定义策略中。

3上载客户端凭据流

现在可以上载ClientCredentialsFlow.xml策略。请确保用您的租户名称替换租户名称。

使用应用程序客户端ID和密码登录

登录后,您将收到一个增强令牌,您可以相应地开始定制示例策略。

url = "https://<yourtenant>.b2clogin.com/<yourtenant>.onmicrosoft.com" + 
          "/B2C_1A_DEMO_CLIENTCREDENTIALSFLOW/oauth2/v2.0/token"

    #the scope as described,typically it looks like this
    scope = "https://<yourtenant>.onmicrosoft.com/<resource server id>/.default"

    response = requests.post( url,
            data={'grant_type':'client_credentials', 
                  'client_id':client, 
                  'client_secret':secret, 
                  'scope':scope},
            headers = {'Content-Type': 'application/x-www-form-urlencoded'}
        )

相关问题