ホームページ >バックエンド開発 >Golang >GO アクセス トークン (keycloak) を認証する

GO アクセス トークン (keycloak) を認証する

王林
王林転載
2024-02-09 09:30:24796ブラウズ

GO 验证访问令牌(keycloak)

最新のネットワーク アプリケーションでは、セキュリティが非常に重要です。ユーザー データとシステム リソースを保護するには、アクセス トークンの検証が不可欠な手順です。 Keycloak は、強力な ID 認証およびアクセス管理ソリューションとして、開発者にシンプルで安全な検証方法を提供します。この記事では、PHP エディターの Xigua が、Keycloak を使用してアクセス トークンを検証し、アプリケーションのセキュリティを確保する方法を紹介します。この記事のガイダンスを活用すると、アクセス トークン検証を簡単に実装し、承認されたユーザーのみがアプリケーションにアクセスできるようにすることができます。

質問内容

GOを使用したアクセストークン検証を実装しようとしています。しかし、オンラインで見た例では、TOKEN_SECRET を使用して検証しているだけのようです。ただし、私は Java Spring でのプログラミングに慣れているため、TOKEN_SECRET を使用する必要はありません。 jwk-set-uri を指定するだけで、有効性 (自動セキュリティ フィルターなど) がチェックされ、oauth サーバーと通信してこの検証が行われることがわかります。

Go には、oauth サーバーにリクエストを送信してトークンが有効かどうかを確認できるライブラリはありませんか?

oauth サーバーの userinfo エンドポイントにリクエストを送信することで、これを手動で実行できることはわかっています:

リーリー

(キー認証のあるヘッダーにトークンを含めます)

しかし、これが基準を完全に満たしているかどうかはわかりません。

正しいアプローチは何ですか?

解決策

短い答え: go-oidc

を使用します。

長い答え: まず、Spring Security が JWT アクセス トークンを自動的に検証する方法を理解しましょう。慣例により、application.yaml 構成ファイルで OAuth 2.0 または OIDC クライアント プロパティを定義すると、Spring は自動的にセキュリティ フィルター チェーンにフィルターを接続し、jwk-set を取得します。 Keycloakは、Keycloakがトークンに署名するために使用する鍵に対応する公開鍵のセットです。フィルターはすべての保護されたルートに適用され、Spring は公開キーを使用してトークンの署名が有効であることを確認し、該当する場合は他のチェック (オーディエンス、タイムアウトなど) を実行します。

それでは、Go でこれをどのように行うのでしょうか?

jwk-set を受け入れ、それを使用してトークンを検証する単純なミドルウェアを作成できます。 alg 宣言をチェックして、どの署名アルゴリズムが使用されたかを確認し、対応する公開鍵を jwk-set から選択して、署名が有効であることを確認する必要があります。次に、トークンをデコードし、iss および sub クレームを確認して、トークンが信頼できる発行者からのものであり、対象読者を対象としたものであることを確認し、有効期限が切れていないことを確認します。 nbf (以前ではない) および iat (その後に発行) によって宣言された時間が正しいことを確認してください。最後に、必要に応じて、下流でトークンからの関連情報がリクエスト コンテキストに挿入されます。 リーリー

以上がGO アクセス トークン (keycloak) を認証するの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事はstackoverflow.comで複製されています。侵害がある場合は、admin@php.cn までご連絡ください。