tkt認証クッキーは、ユーザー名とオプションでタイムスタンプを含むいくつかの情報の安全なハッシュですが、ユーザーパスワードは含まれません。一旦認証されると、あなたはそのようなクッキーをユーザに与え、ユーザがあなたを返すたびに再びユーザ名を抽出して、それが同じユーザであることを知る。
このクッキーを安全に保つには、サーバー側の秘密が必要です。その秘密を保持しているサーバーのみがこれらのCookieを作成できます。攻撃者がそれを握った場合、これらのユーザーのパスワードを知る必要はなく、任意のユーザーに対して認証Cookieを生成することができます。
secret
このポリシーのパラメータは、サーバー側の秘密です。それはあなたのサーバーのマスターパスワードのようなものです。サイト(WSGI)で複数のプロセスを実行する場合は、プロセス間で一貫性を持たせ、各プロセスがCookieを確認できるようにする必要があります。設定ファイル、ソースコード、またはデータベースで指定することができます。どのくらいの柔軟性が必要か、セキュリティポリシー、およびシークレットを他のシステムと共有する必要があるかどうかによって異なります。
同じ標準を使用して、ユーザーの認証が必要なドメイン内の他のシステムとシークレットを共有できます。たとえば、Apacheにはmod_auth_tkt
モジュールがあり、Ploneは同じ標準を使用し、このシークレットを共有することで、異種のWebアプリケーション間でユーザーにシングルサインオンを提供できます。
秘密を変更すると、既存のセッションが無効になり、ユーザーが再認証する必要があることに注意してください。
いずれにしても、既存のCookieの寿命は限られています。埋め込みタイムスタンプは、ポリシーにtimeout
パラメータを設定した場合、有効期間として受け入れられる時間を制限します。タイムアウトを設定し、再発行時間を設定するのが良いポリシーです。タイムアウト内にアプリケーションを再訪問するユーザーは、新しいタイムスタンプを持つ新しいクッキーを再発行し、セッションを新鮮に保ちます。こうすることで、セッションクッキーが自動的に期限切れになるのは、ユーザーが戻ってこない場合で、そのCookieを後で攻撃者が再利用することはできません。 reissue
パラメータを使用すると、新しいトークンの発行速度を制御できます。 reissue
秒以内にサーバーを再訪すると、新しいトークンが生成されません。