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

名前空間での利用者 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 リファレンスをご覧ください。