具有Azure AD错误验证签名的Hashicorp Vault OIDC身份验证方法

时间:2020-01-31 15:33:29

标签: azure-active-directory hashicorp-vault

我正在尝试使用JWT/OIDC authentication method(使用Azure AAD作为提供程序)来保护Vault UI和命令行登录。我正在关注文档,但最后出现以下错误消息:

Token verification failed. error validating signature: failed to verify signature: failed to verify id token signature

这是我设置身份验证方法所遵循的步骤

  1. 创建允许我的重定向URL的Azure应用注册
    1. http://localhost:8250/oidc/callback
    2. https://hostname:port_number/ui/vault/auth/oidc/oidc/callback
  2. 我对应用程序和Microsoft Graph API的委托类型具有Group.Read.All权限
  3. 从门户网站生成了秘密及其令牌
  4. 我正在使用v2.0端点https://login.microsoftonline.com/{my_tenant_id}/v2.0
  5. 我将oidc范围指定为https://graph.microsoft.com/.default
  6. 我使用"groupMembershipClaims": "All",修改了应用清​​单

然后我在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"
}

azuread-default-role-config.json文件包含以下内容

{
    "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"
}

"verbose_oidc_logging": "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服务器上,可以看到已经生成了令牌。如果继续执行https://jwt.ms,然后粘贴JWT令牌,它将被解密,并且可以确定适当的值。 我可以在用户下看到大约90个组,并带有正确的租户ID和客户ID。

如果我使用命令行vault login -method oidc role=default尝试登录过程,则会看到相同的错误消息。

Code: 400. Errors:

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

1 个答案:

答案 0 :(得分:0)

我遇到了同样的麻烦。从Azure删除应用程序并再次配置它很有帮助。

有效的我的保险柜角色配置:

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"
}

Azure API权限中,我具有:

  • 电子邮件
  • Group.Read.All
  • GroupMember.Read.All
  • openid
  • 个人资料
  • User.Read
  • 为我的网域授予的所有信息

令牌配置: 声明:

  • 电子邮件(类型:ID)
  • 电子邮件(类型:访问权限)
  • 组(类型:ID,访问权限,SAML)
  • upn(类型:ID)
  • upn(类型:访问权限)

身份验证: 隐式授予:

  • 访问令牌
  • ID令牌