メインコンテンツまでスキップ

名前空間での利用者 ID 取得

利用者 ID の取得では、ある人物に対して発行される利用者 ID は、テナントによって異なります。

名前空間機能を用いることによって、複数のテナント間で共通の利用者 ID を取得することができます。

名前空間での利用者 ID

GetUserInNamespace を使用することで、 テナント内で取得した利用者 IDを名前空間内で固有かつ一意な利用者 ID に変換することができます。 本機能によって、複数のサービスで PocketSign Verify を利用している場合などに、利用者の突合が可能になります。

名前空間内の利用者 ID が取得できるのは、各テナントが所属する名前空間に対してのみです。

名前空間の作成と所属

Verify API には、複数テナントをグルーピングする仕組みが用意されており、それぞれのグループを名前空間と呼びます。

現在、名前空間の作成や、テナントの所属変更は Platform コンソールから操作いただくことができません。 操作が必要な場合は、お問い合わせください。

実装例

注意

この機能は、現在プレビュー版での提供となります。 利用方法はプレビュー機能の利用をご参照ください。

クライアントライブラリのセットアップ方法は、クライアントライブラリをご参照ください。

package main

import (
"context"
"fmt"
"log"
"net/http"

"buf.build/gen/go/pocketsign/apis/connectrpc/go/pocketsign/verify/v2/verifyv2connect"
verifyv2 "buf.build/gen/go/pocketsign/apis/protocolbuffers/go/pocketsign/verify/v2"
"connectrpc.com/connect"
)

var (
// APIエンドポイントを指定します。この値は環境によって異なります。
baseUrl = "https://verify.mock.p8n.app"

// テナントAのAPIトークンです。
tokenA = "<YOUR_API_TOKEN_A>"

// テナントBのAPIトークンです。
tokenB = "<YOUR_API_TOKEN_B>"

// テナントAで取得した対象の利用者 ID です。
userIdA = "0123-4567-...."

// テナントBで取得した対象の利用者 ID です。
userIdB = "0123-4567-...."

// 対象の名前空間名です。
namespace = "namespace_0123..."
)

func run() error {
// APIクライアントを作成します。
client := verifyv2connect.NewUserServiceClient(http.DefaultClient, baseUrl)

// テナントA内の利用者IDを名前空間内の利用者IDに変換するリクエストを作成します。
requestA := connect.NewRequest(&verifyv2.GetUserInNamespaceRequest{
UserId: userIdA,
Namespace: namespace,
})

// リクエストにAPIトークンを設定します。
requestA.Header().Set("Authorization", "Bearer "+tokenA)

// リクエストを送信します。
responseA, err := client.GetUserInNamespace(context.Background(), requestA)
if err != nil {
return err
}

// 結果を表示します。
fmt.Printf("[TenantA] UserID: %s\n", responseA.Msg.User.Id)

// テナントB内の利用者IDを名前空間内の利用者IDに変換するリクエストを作成します。
requestB := connect.NewRequest(&verifyv2.GetUserInNamespaceRequest{
UserId: userIdB,
Namespace: namespace,
})

// リクエストにAPIトークンを設定します。
requestB.Header().Set("Authorization", "Bearer "+tokenB)

// リクエストを送信します。
responseB, err := client.GetUserInNamespace(context.Background(), requestB)
if err != nil {
return err
}

// 結果を表示します。
fmt.Printf("[TenantB] UserID: %s\n", responseB.Msg.User.Id)

return nil
}

func main() {
if err := run(); err != nil {
log.Fatalln(err)
}
}

リクエストに成功すると、以下のように結果が表示されます。 複数のテナントで取得した名前空間内利用者 ID が一致しています。

[TenantA] UserID: 4defded7-cf7b-4f76-a87c-be8c289f7b9a
[TenantB] UserID: 4defded7-cf7b-4f76-a87c-be8c289f7b9a

次のステップ

その他、API の詳しい使い方やエラーの詳細等については、API リファレンスをご覧ください。