---
title: OIDC ProviderとしてのHashiCorp Vaultを使ってTAP GUIにログインする
tags: ["Kubernetes", "Cartographer", "Tanzu", "TAP", "Vault", "TAP GUI"]
categories: ["Dev", "CaaS", "Kubernetes", "TAP"]
date: 2023-01-12T01:58:03Z
updated: 2023-01-12T02:00:05Z
---

[前の記事](https://ik.am/entries/730)でHashiCorp VaultとOpenID Connect Providerとして使う方法を紹介しましたが、
今度はこのOIDC ProviderとしてのVaultを使ってTAP GUIにログインしたいと思います。


VaultにOIDCクライアントの登録をします。

```
TAP_GUI_URL=https://tap-gui.view.example.com # CHANGEME

vault write identity/oidc/client/tap-gui \
  redirect_uris="${TAP_GUI_URL}/api/auth/oidc/handler/frame" \
  assignments="allow_all"
```

CLIENT_IDとCLIENT_SECRETは次のように取得できます。

```
CLIENT_ID=$(vault read -field client_id identity/oidc/client/tap-gui)
CLIENT_SECRET=$(vault read -field client_secret identity/oidc/client/tap-gui)
```

TAP GUIでは`email` profileが必須のようなので、[前記事](https://ik.am/entries/730)と同じようにprofileを追加します。実際の値はemailアドレスでなくても大丈夫です。

```
MOUNT_ACCESOR=$(vault read -field accessor sys/auth/ldap)
EMAIL_SCOPE_TEMPLATE="{\"email\": {{identity.entity.aliases.$MOUNT_ACCESOR.name}}}"
vault write identity/oidc/scope/email template="$(echo ${EMAIL_SCOPE_TEMPLATE} | base64 -)"
vault write identity/oidc/provider/default scopes_supported=email
```


> `email` profileがないと次のようなエラーが発生しました。<br>
> <img width="1024" alt="image" src="https://user-images.githubusercontent.com/106908/211187517-548b2bc4-b985-46b5-98db-5f2f9f021dd7.png">


https://docs.vmware.com/en/VMware-Tanzu-Application-Platform/1.4/tap/tap-gui-auth.html#configure-an-authentication-provider-0 を参考に、`tap-values.yaml`に次の箇所を設定します。


`${...}`の部分は置き換えてください。

```yaml
tap_gui:
  # ...
  app_config:
    auth:
      environment: development
      session:
        secret: custom session secret
      providers:
        oidc:
          development:
            metadataUrl: ${VAULT_URL}/v1/identity/oidc/provider/default/.well-known/openid-configuration
            clientId: ${CLIENT_ID}
            clientSecret: ${CLIENT_SECRET}
            tokenSignedResponseAlg: RS256
            scope: "openid email"
            prompt: auto
```

TAPを更新します。

```
tanzu package installed update -n tap-install -p tap -f tap-values.yaml
```

TAP GUIにアクセスするとOIDCによるログインが求められます。

<img width="1024" alt="image" src="https://user-images.githubusercontent.com/106908/211957361-490ab229-f3f4-40ae-a097-44ae52083f80.png">

"SIGN IN"ボタンを押すとVaultにリダイレクトし、VaultにログインするとTAP GUIに戻ります。


<img width="1024" alt="image" src="https://user-images.githubusercontent.com/106908/211187758-689326ae-7b88-4f5d-b743-ed7f0111b550.png">
