この機能は、現在、一部のアカウントでのみ利用できます。今後、段階的に利用可能になります。なお、先行アクセスを希望する場合は、 こちらのフォームからご申請ください。 また、どのようなユーザーがどのようなデータにアクセスしようとしているかを踏まえて認証する必要があります。これにより、適切な権限を持つユーザーのみが、必要な範囲のデータにアクセスできるようになります。あわせて、認証に関するデータのやりとりでは、改ざんを検知する仕組みを用いて機密性や完全性を保つことが重要です。
ユーザー認証が行われる場面の例:
上記をはじめとするさまざまな場面で、不正アクセスを防止してデータを保護し、プライバシーを守ることが求められます。
JWTとは、「JSON Web Token」の略で、認証に必要なデータをやりとりするための仕組みや規格の名称です。また、この仕組みにおいて用いられる認証用データ(トークン)を指すこともあります。JWTでは、認証用データに対して暗号化(署名)の処理を行います。安全性を保つと同時にデータ量を抑えて処理することができるため、さまざまなWebサービスで導入されています。特に、外部サービスと連携したユーザー認証(シングルサインオン)を行う際に利用されています。この仕組みを用いると、認証のために必要なデータを常に保持しておく必要がなくなります。必要な時に必要な範囲の認証をスムーズに行うことが可能になります。
また、認証処理においてデータをコンパクトな形で取り扱うことができ、処理がしやすくなります。認証のたびに毎回ユーザー名とパスワードを聞いたりしなくても、適切に認証することが可能になります。
JWTのメリットは以下のとおりです。
Zoho Deskのヘルプセンターの利用者は、ヘルプセンターでユーザー登録を行うかどうかによって、ゲストと登録済みユーザーの2つに分類されます。
必要な権限 ユーザーがヘルプセンターにサインインする際にJWTを通じて認証が行われる場合、以下のような流れで処理が行われます。
データの種類 | 内容 |
ヘッダー | 認証用データ(トークン)の種類や取り扱いに関するデータ(メタデータ)です。具体的には、JWTの種類やサインインのアルゴリズムなどを表すパラメーターです。 |
ペイロード | 認証用データ(トークン)の本体です。具体的には以下のようなパラメーターです。
|
シグネチャ | 認証トークンが改ざんされていないことを検知するために使用するデータです。具体的には、ヘッダーとペイロードのデータを結合して変換したものに対して、認証用の秘密鍵で暗号化(署名)の処理を行ったものです。なお、暗号化前のデータの変換においては、Base64形式でエンコードの処理を行ったうえで、さらにハッシュ化が行われます。ハッシュ化のアルゴリズムとしては、HS256が使用されます。シグネチャを生成するための処理の概要は以下のとおりです。 シグネチャ = Base64によるエンコード ( HS256によるハッシュ化 ( ヘッダー + "."+ ペイロード, 秘密鍵 ) ) |
上記を組み合わせて、JWTにおける認証トークンが生成されます。具体的には、ヘッダー、ペイロード、シグネチャの各データを、ドット(.)で結合したものがトークンとなります。
トークン = ( ヘッダー + "."+ ペイロード + "."+ シグネチャ )
import time import jwt from hashlib import sha256 def generate_jwt(payload, secret_key): """Generates a JWT using HS256. Args: payload: The JWT payload. secret_key: The secret key to use for signing. Returns: A string containing the JWT. """ header = { "typ": "JWT", "alg": "HS256" } encoded_jwt = jwt.encode(payload, secret_key, algorithm="HS256") return encoded_jwt # Example usage: payload = { "jti" : sha256(str(time.time_ns()).encode('utf-8')).hexdigest(), "exp" : str(time.time_ns() + 300000), "nbf" : str(time.time_ns()), "email" : "demo@zylker.com" } secret_key = "SflKxwRJSMeKKF2QT4fwpMeJf36POk6yJV_adQssw5c" jwtToken = generate_jwt(payload, secret_key) print(jwtToken)Zoho Deskのヘルプセンターでは、JWTを用いた認証を有効にすることが可能です。設定においては、ログインやログアウトの処理を行う際に使用するURL(認証を行う外部サービスのURL)などを指定します。主な設定項目とその概要は以下のとおりです。

メモ:
管理者は、必要に応じて、JWTを用いた認証用の設定を削除できます。なお、削除後は、ユーザーがZoho Deskのヘルプセンターにサインインするには、ユーザー登録を行う必要があります(外部サービスを通じたサインインはできなくなります)。また、ヘルプセンターの利用者の状況に応じて、削除後の利用方法が以下のようになります。
JWTによる認証の設定を削除するには