Vivoldi SSO(Single Sign-On)・連携ガイド

このガイドは、組織のIdP(Identity Provider)とVivoldiをRS256ベースのJWT認証で安全に連携したい開発者向けの技術ドキュメントです。

RSA鍵ペアの生成、JWKS(JSON Web Key Set)の構成、JWT署名トークンの発行まで、Linuxサーバー環境を前提とした実践的な設定例とともに、JWT生成プロセスを段階的に解説します。

JWKSファイルの役割と検証方式

JWKS(JSON Web Key Set)は、JWT署名検証に使用される公開鍵情報を提供するための標準フォーマットです。
Vivoldiは登録済みのJWKSエンドポイントから Public Key を取得し、JWTトークンの署名および有効期限を検証します。

Key Rotation環境でも新しい公開鍵を安全に配布でき、Public Keyのみを共有する構成のため、Private Keyを外部システムへ公開せずに認証を構築できます。

1. 証明書キー ファイルの生成

RS256方式でJWTトークンを発行するには、RSAの Private KeyPublic Key のペアが必要です。

Private KeyはJWTトークンの署名に使用され、Public KeyはJWKSファイルを通じてVivoldiサーバー側の署名検証に利用されます。セキュリティ強化のため、3072ビット以上の鍵長を推奨します。

Linux Terminal


# Private Key Generation (RSA 3072-bit, PKCS#1)
$ openssl genpkey -algorithm RSA -pkeyopt rsa_keygen_bits:3072 -out sso_private.pem

# Public Key Extraction (X.509 PEM)
$ openssl rsa -in sso_private.pem -pubout -out sso_public.pem

2. ファイル権限の設定

Private Keyファイルは、必ず サーバー内部のみで使用 し、不要なアクセスを防ぐためにファイルシステム権限を最小限に制限してください。

Private Keyが漏洩すると、攻撃者が有効なJWTトークンを任意に発行できるようになり、SSO認証基盤全体が危険にさらされる可能性があります。

⚠️ 注意: Gitリポジトリ、メール、クラウドストレージなどの 共有環境へ絶対にアップロードしないでください。 CI/CDパイプラインでも環境変数やSecret Managerを利用して安全に管理してください。

Linux Terminal


# Private Key: Owner-only read access (600 recommended)
$ chmod 600 sso_private.pem

# Public Key: Set to read-only (644)
$ chmod 644 sso_public.pem

# Change the owner to the application execution account when necessary (e.g., www-data)
$ chown www-data:www-data sso_*.pem

3. JWKSファイルの作成と登録

Vivoldiダッシュボードの [開発者 → SSO設定] ページで sso_public.pem ファイルをアップロードすると、jwks.json ファイルが自動生成されます。

生成された jwks.json は、RFC 7517標準に準拠したJSON Web Key Set形式であり、必ず以下のパスで外部公開してください。

https://yourdomain.com/.well-known/jwks.json
VivoldiサーバーはJWTトークン検証時、このエンドポイントから公開鍵を取得して署名を検証します。パスが誤っている場合や応答がない場合、ログインは失敗します。

jwks.json example


{
    "keys": [
        {
            "kty": "RSA",
            "use": "sig",
            "kid": "vivoldi-sso-20251008",
            "alg": "RS256",
            "n": "AN3V-5RxI7ekeBtc5N66yHzmhib_5ES5i3ZYoU4znkNh...",
            "e": "AQAB"
        }
    ]
}

Items

kty string
Key Type(キータイプ)の略です。 SSOではRSA形式の公開鍵を使用します。
use string
キーの用途を示します。 「sig」は署名(signature)目的で使用されることを意味します。
kid string
Key ID(キー識別子)で、キーのバージョンを区別するための識別子です。 例:vivoldi-sso-20251008
alg string
使用される署名アルゴリズムを示します。 Vivoldi SSOは、高度なセキュリティのためRS256(RSA + SHA-256)のみをサポートします。
n string
RSA公開鍵のmodulus(モジュラス)値で、Base64URLでエンコードされた長い文字列です。
この値は、認証トークン生成時にsso_private.pemと共に使用されます。
e string
RSA公開鍵のexponent(指数)値です。
通常はAQAB(65537)に固定されています。

4. JWTトークン生成サンプル

Java、PHP、Node.js環境でRS256方式のJWTトークンを生成し、Vivoldi SSOログインを実行する方法を説明します。

JWTトークンを発行する前に、組織アカウントと紐づいたVivoldiユーザーアカウントが登録されている必要があります。
[設定 → ユーザー管理] ページで先にユーザー登録を行ってください。

💡 エンタープライズ専用機能

Vivoldiは、エンタープライズ向けにSingle Sign-On(SSO)機能を提供しています。
組織の認証システムと連携することで、セキュリティポリシーを一元管理し、アクセス制御をより効率的に運用できます。

導入に関するご相談は、[お問い合わせ] ページよりご連絡ください。

エンタープライズプランへアップグレードすると、ログイン後に言語別のSSO連携サンプルコードをダッシュボード上で直接確認できます。

✨ エンタープライズレベルの統合認証

SSO(シングルサインオン)は、貴社の認証システムとVivoldiを連携させ、
全てのユーザーが一度のログインで安全にサービスへアクセスできるようにします。

集中型アカウント管理、強化されたセキュリティポリシー、アクセス制御の自動化による組織単位でのセキュリティと運用効率の向上は、エンタープライズプランで提供されます。

エンタープライズプランへのアップグレード