使用 Azure ADB2C 令牌对 RabbitMq 进行身份验证

时间:2021-01-21 19:10:52

标签: rabbitmq azure-ad-b2c azure-ad-b2c-custom-policy

我正在使用 Azure ADB2C 向 Web 服务验证我的用户。我还使用自定义策略来丰富 Azure ADB2C 生成的令牌。这工作正常。

现在我想添加另一个服务,为此我想使用 RabbitMq。为了向 RabbitMq 服务器验证用户身份,我想使用 RabbitMq 的 oauth2 plugin

基本上我想使用 Azure ADB2C 生成的相同 jwt 令牌来验证和授权用户到 RabbitMq 服务器。

为此,我需要向 RabbitMq 提供我的自定义 Azure ADB2C 策略正在使用的 UAA signing key

这是来自 RabbitMq oauth2 的示例:

[
  %% ...
  %% backend configuration
  {rabbitmq_auth_backend_oauth2, [
    {resource_server_id, <<"my_rabbit_server">>},
    %% UAA signing key configuration
    {key_config, [
      {signing_keys, #{
        <<"a-key-ID">> => {pem, <<"*-----BEGIN PUBLIC KEY-----
MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA2dP+vRn+Kj+S/oGd49kq
6+CKNAduCC1raLfTH7B3qjmZYm45yDl+XmgK9CNmHXkho9qvmhdksdzDVsdeDlhK
IdcIWadhqDzdtn1hj/22iUwrhH0bd475hlKcsiZ+oy/sdgGgAzvmmTQmdMqEXqV2
B9q9KFBmo4Ahh/6+d4wM1rH9kxl0RvMAKLe+daoIHIjok8hCO4cKQQEw/ErBe4SF
2cr3wQwCfF1qVu4eAVNVfxfy/uEvG3Q7x005P3TcK+QcYgJxav3lictSi5dyWLgG
QAvkknWitpRK8KVLypEj5WKej6CF8nq30utn15FQg0JkHoqzwiCqqeen8GIPteI7
VwIDAQAB
-----END PUBLIC KEY-----*">>}
          }}
      ]}
    ]}
].

但是我找不到这个“公钥”。

例如看这个demo key,没有RabbitMq oauth2认证器要求的PUBLIC KEY。

在哪里可以找到我要使用的 Azure ADB2C 自定义策略的公钥?

1 个答案:

答案 0 :(得分:0)

转到 Azure 门户 AAD B2C Blade。找到您的自定义策略或用户流程。单击“立即运行”按钮。 在窗格中,您会找到 Open ID Connect Metadata document

https://fabrikamb2c.b2clogin.com/fabrikamb2c.onmicrosoft.com/your-policy-id/v2.0/.well-known/openid-configuration

在本文档中,您将找到一个 JWKS URI。打开 JWKS URI。在 JWKS URI 中,您将找到用于生成签名密钥的参数 - 模数 (n) 和指数 (e)。

您需要组合这些值(二进制编码的字节)以重新创建您正在寻找的公共证书。 I have a RSA public key exponent and modulus. How can I encrypt a string using Python?