Azure active directory 验证签名时出现Azure AD错误的Hashicorp Vault OIDC身份验证方法

Azure active directory 验证签名时出现Azure AD错误的Hashicorp Vault OIDC身份验证方法,azure-active-directory,hashicorp-vault,Azure Active Directory,Hashicorp Vault,我正在尝试使用Azure AAD作为提供程序来保护vault UI和命令行登录。我正在按照文档进行操作,但在结束时显示以下错误消息: Token verification failed. error validating signature: failed to verify signature: failed to verify id token signature 下面是我设置auth方法所遵循的步骤 创建了Azure应用程序注册,允许我重定向URL 我拥有Microsoft Gra

我正在尝试使用Azure AAD作为提供程序来保护vault UI和命令行登录。我正在按照文档进行操作,但在结束时显示以下错误消息:

Token verification failed. error validating signature: failed to verify signature: failed to verify id token signature
下面是我设置auth方法所遵循的步骤
  • 创建了Azure应用程序注册,允许我重定向URL
  • 我拥有Microsoft Graph API的应用程序和委托类型的
    组.Read.All
    权限
  • 从门户生成了一个秘密及其令牌
  • 我正在使用v2.0端点
    https://login.microsoftonline.com/{my_tenant_id}/v2.0
  • 我将oidc范围指定为
    https://graph.microsoft.com/.default
  • 我用
    的“groupMembershipClaims”修改了应用程序清单:“全部”,
  • 然后,我使用vault上的令牌身份验证登录,并发出以下命令行

    vault auth enable oidc
    vault write auth/oidc/config @azuread-auth-config.json
    # Success! Data written to: auth/oidc/config
    vault write auth/oidc/role/default @azuread-default-role-config.json
    
    azuread auth config.json文件包含以下内容

    {
        "oidc_discovery_url": "https://login.microsoftonline.com/{my_tenant_id}/v2.0",
        "oidc_client_id": "{my_client_id}",
        "oidc_client_secret": "{my_client_secret}",
        "default_role": "default"
    }
    
    {
        "allowed_redirect_uris": [
            "http://localhost:8250/oidc/callback",
            "https://{my_hostname}/ui/vault/auth/oidc/oidc/callback",
            "http://localhost:8200/ui/vault/auth/oidc/oidc/callback"
        ],
        "groups_claim": "groups",
        "oidc_scopes": [
            "https://graph.microsoft.com/.default"
        ],
        "policies": [
            "default"
        ],
        "user_claim": "email",
        "bound_audiences": [
            "{my_client_id}"
        ],
        "verbose_oidc_logging": "true"
    }
    
    azuread default role config.json
    文件包含以下内容

    {
        "oidc_discovery_url": "https://login.microsoftonline.com/{my_tenant_id}/v2.0",
        "oidc_client_id": "{my_client_id}",
        "oidc_client_secret": "{my_client_secret}",
        "default_role": "default"
    }
    
    {
        "allowed_redirect_uris": [
            "http://localhost:8250/oidc/callback",
            "https://{my_hostname}/ui/vault/auth/oidc/oidc/callback",
            "http://localhost:8200/ui/vault/auth/oidc/oidc/callback"
        ],
        "groups_claim": "groups",
        "oidc_scopes": [
            "https://graph.microsoft.com/.default"
        ],
        "policies": [
            "default"
        ],
        "user_claim": "email",
        "bound_audiences": [
            "{my_client_id}"
        ],
        "verbose_oidc_logging": "true"
    }
    
    添加行“详细日志记录”:“true”
    仅用于调试目的

    我遵循的登录过程 在Vault UI上启动登录过程后,我将被重定向到url

    https://login.microsoftonline.com/{my_tenant_id}/oauth2/v2.0/authorize?client_id={my_client_id}&nonce=5e52640c66c2dsf64f5ds3f1sd46dc6717&redirect_uri=https%3A%2F%2F{my_hostname}%2Fui%2Fvault%2Fauth%2Foidc%2Foidc%2Fcallback&response_type=code&scope=openid+https%3A%2F%2Fgraph.microsoft.com%2F.default&state=744a03304e71ed7e4dedgrd3541544
    
    然后我会收到登录成功消息,它会自动关闭窗口

    我还在跟踪vault服务器上的日志,可以看到已生成令牌。如果我继续粘贴JWT令牌,它将被解密,我可以识别正确的值。 我可以在我的用户下看到大约90个具有正确租户id和客户端id的组

    如果我使用命令行
    vault登录-方法oidc role=default
    尝试登录过程,我会收到相同的错误消息

    Code: 400. Errors:
    
    * Token verification failed. error validating signature: failed to verify signature: failed to verify id token signature
    

    我也遇到了同样的麻烦。从Azure中删除应用程序并再次对其进行配置有帮助

    有效的我的Vault角色配置:

    vault write auth/oidc/role/<< oidc_role_name >> -<<EOF
    {
      "allowed_redirect_uris" : ["http://localhost:8250/oidc/callback","https://vault.example.com:8200/ui/vault/auth/oidc/oidc/callback"],
      "user_claim" : "sub",
      "policies" : "default",
      "oidc_scopes" : "https://graph.microsoft.com/.default,profile,email",
      "verbose_oidc_logging" : "true"
    }
    

    vault write auth/oidc/role/>-我遇到了同样的问题。从Azure中删除应用程序并再次对其进行配置有帮助

    有效的我的Vault角色配置:

    vault write auth/oidc/role/<< oidc_role_name >> -<<EOF
    {
      "allowed_redirect_uris" : ["http://localhost:8250/oidc/callback","https://vault.example.com:8200/ui/vault/auth/oidc/oidc/callback"],
      "user_claim" : "sub",
      "policies" : "default",
      "oidc_scopes" : "https://graph.microsoft.com/.default,profile,email",
      "verbose_oidc_logging" : "true"
    }
    

    vault write auth/oidc/role/>请查看此线程@TonyJu是的,这是真的,在jwt.io上,我们必须指定HS256算法,而不是MS文档中提到的RS256,以查看签名验证。我尝试使用设置
    jwt\u supported\u algs
    强制HS256,但根据插件,它似乎不是受支持的算法。我的配置与您完全相同,我没有收到电子邮件索赔保险库:
    在令牌中找不到索赔“email”。我注意到,
    “用户声明”行中有双逗号“:“电子邮件”,
    ,请尝试修复它,可能它的解析不好,并且角色在web ui中不可见。@MUHAHA我仔细检查了一下,我的设置json中没有双逗号。问题就在这里。@DoRivard你找到解决这个问题的办法了吗?遇到同样的问题请看一下这个线程@TonyJu是的,这是真的,在jwt.io上,我们必须指定HS256算法,而不是MS文档中提到的RS256,以查看签名验证。我尝试使用设置
    jwt\u supported\u algs
    强制HS256,但根据插件,它似乎不是受支持的算法。我的配置与您完全相同,我没有收到电子邮件索赔保险库:
    在令牌中找不到索赔“email”。我注意到,
    “用户声明”行中有双逗号“:“电子邮件”,
    ,请尝试修复它,可能它的解析不好,并且角色在web ui中不可见。@MUHAHA我仔细检查了一下,我的设置json中没有双逗号。问题就在这里。@DoRivard你找到解决这个问题的办法了吗?在同一问题上结结巴巴