このガイドは、新規または既存のGo APIアプリケーションにgo-jwt-middlewareパッケージを使ってAuth0を統合する方法を説明します。Auth0 DashboardでAPIをまだ作成していない場合は、対話型のセレクターを使ってAuth0 APIを新規作成します。そうでない場合は、プロジェクトに既存のAPIを選択することができます。Auth0 Dashboardを使って初めてAPIをセットアップする場合には、使用の開始ガイドを確認してください。それぞれのAuth0 APIにはAPI識別子があり、アプリケーションにアクセストークンの検証で使用されます。次のシェルコマンドを実行して、依存関係をダウンロードします:
Auth0を初めてご利用ですか? Auth0の仕組みと、OAuth 2.0フレームワークを用いたAPI認証と認可の実装について説明します。
1
アクセス許可を定義する
アクセス許可は、ユーザーの代わりに、提供されたアクセストークンを使ってどのようにしてリソースにアクセスできるのかを定義できるようにします。たとえば、ユーザーがマネージャーアクセスレベルを持つ場合には、![[Auth0 Dashboard]>[Applications(アプリケーション)]>[APIs]>[Specific API(特定のAPI]>[Permissions(権限)]タブ](https://mintlify.s3.us-west-1.amazonaws.com/docs-dev/images/ja-jp/cdy7uua7fh8z/1s3Yp5zqJiKiSWqbPSezNO/acef814282795bef6921535f044f96e9/Quickstarts_API.png)
messages
リソースに対して読み取りアクセスを付与し、管理者アクセスレベルを持つ場合には、書き込みアクセスを付与することができます。Auth0 Dashboardの[API]セクションにある**[Permissions(権限)]** ビューで使用可能なアクセス許可を定義することができます。以下の例ではread:messages
スコープを使用します。![[Auth0 Dashboard]>[Applications(アプリケーション)]>[APIs]>[Specific API(特定のAPI]>[Permissions(権限)]タブ](https://mintlify.s3.us-west-1.amazonaws.com/docs-dev/images/ja-jp/cdy7uua7fh8z/1s3Yp5zqJiKiSWqbPSezNO/acef814282795bef6921535f044f96e9/Quickstarts_API.png)
2
依存関係をインストールする
go.mod
ファイルを追加して、必要な依存関係をすべてリストします。3
アプリケーションを構成する
アプリの構成を保存するために、
.env
ファイルをプロジェクトディレクトリのルート内に作成します。その後、環境変数を入力します:4
アクセストークンを検証するミドルウェアを作成する
EnsureValidToken
ミドルウェア関数はアクセストークンを検証します。この関数は、保護したいすべてのエンドポイントに適用することができます。トークンが有効であれば、エンドポイントがリソースを開放します。トークンが無効であれば、APIが401 Authorization
エラーを返します。受信する要求のアクセストークンを検証するには、go-jwt-middleware ミドルウェア をセットアップします。APIはデフォルトで、RS256をトークン署名アルゴリズムとしてセットアップします。RS256は秘密鍵と公開鍵のペアで機能するため、トークンはAuth0アカウントの公開鍵を使用して検証することができます。この公開鍵には、https:///.well-known/jwks.jsonでアクセスすることができます。トークンが要求されたリソースへのアクセスに十分なスコープ を持っているか確認する機能を含めてください。HasScope
関数を作成して、応答を返す前に、アクセストークンに正しいスコープがあることを確認します。5
APIエンドポイントを保護する
この例では、
要求の
EnsureToken
ミドルウェアを使用しない/api/public
エンドポイントを作成して、未認証の要求にも対応できるようにします。EnsureToken
ミドルウェアを必要とする/api/private
エンドポイントを作成して、追加スコープのないアクセストークンを含む認証済み要求にのみ利用できるようにします。EnsureToken
ミドルウェアとHasScope
を必要とする/api/private-scoped
エンドポイントを作成して、read:messages
スコープを付与されたアクセストークンを含む認証済み要求にのみ利用できるようにします。read:messages
スコープのみがHasScope
関数で検査されます。状況に応じて、複数のスコープを受け付けるように拡張するか、スタンドアローンのミドルウェアにすることをお勧めします。APIを呼び出す
APIを呼び出すにはアクセストークンが必要です。テスト用のアクセストークンは、API設定の**[Test(テスト)]** ビューから取得することができます。![[Auth0 Dashboard]>[Applications(アプリケーション)]>[API]>[Specific API(特定のAPI]>[Test(テスト)]タブ](https://mintlify.s3.us-west-1.amazonaws.com/docs-dev/images/ja-jp/cdy7uua7fh8z/6jeVBuypOGX5qMRXeJn5ow/dd20eb74e1e9079287762ce33dcf8e2d/Quickstart_Example_App_API.png)
Authorization
ヘッダーにアクセストークンを指定します。チェックポイント
アプリケーションの構成が完了したら、アプリケーションを実行して次の点を確認します: GET /api/publicが認証を必要としない要求に使用できる。 GET /api/privateが認証された要求に使用できる。 GET /api/private-scopedがread:messagesスコープが付与されたアクセストークンを含む認証された要求に使用できる。次のステップ
成功です!ここまで来れば、アプリケーションにログイン、ログアウト、ユーザープロファイル情報が備わっているはずです。これでクイックスタートチュートリアルは終了ですが、機能はまだまだたくさんあります。Auth0でできることについて詳しくは、以下をご覧ください。- Auth0 Dashboard - Auth0のテナントやアプリケーションを構成して管理する方法について説明します
- go-jwt-middleware SDK - このチュートリアルで使用されているSDKをより詳しく説明します
- Auth0 Marketplace - Auth0の機能性を拡張できる各種の統合を見つけられます