🧰

Auth0 Gen for AI の概要とAuth0 のセットアップ手順をまとめてみた。

に公開

はじめに

私は普段から個人開発でAuth0 を利用しています。
そんな中、新規機能として「Auth0 Gen for AI」が登場しました。

この仕組みを使えば、AIアプリケーション作成時に認証から権限管理までをAuth0で完結させられることが分かりました。そこで今回は「Auth0 Gen for AI」の特徴を紹介します!

また、「Auth0 Gen for AI」のサンプルコードの中に、Auth0のセットアップをとても分かりやすく理解できるソースコードがあったため、それを参考にセットアップ手順書もまとめました。

僕自身が実際に詰まりやすかったポイントもあわせて説明しているので、
まだAuth0を使ったことがないという方は、ぜひこの機会に試してみてください!

Auth0とは?

Auth0は、アプリにログイン機能(認証)やアクセス制御(認可)を簡単に追加できるサービスです!これらの機能を一から作る手間やコストをかけずに、短時間で安全なログイン機能を導入できます。

https://auth0.com/jp

私は個人開発でAuth0を使っていて、とても重宝しています。
Auth0には無料枠があるので、個人開発や小規模プロジェクトでも気軽に試すことができるのも、大きな魅力の一つです!


https://auth0.com/pricing

Auth0 Gen For AIとは?

Auth0 Gen For AI とは、「AI(チャットボットやRAGを用いたアプリ)」を作るときに必要となる「AIの代理アクセス制御」・「データアクセス制御」などの認証・権限まわりの仕組みを、開発者が手軽にかつ安全に実装できる仕組みです。

Auth0 Gen For AI の特徴4選

ここからは、Auth0 Gen For AI の主な特徴を4つ紹介します!

https://auth0.com/blog/jp-introducing-auth-for-genai-launching-identity-for-ai-agents/

1. ユーザー認証(User Authentication)

生成AIアプリで「誰が操作しているのか」を安全に確認する仕組みです!

Gen for AIでは、複数のログインアカウント(Google・GitHubなど)を1つのプロフィールにリンクして、同じユーザーとして扱えます。

またユーザーがサインインした後でも、追加でデータアクセスをしたい時や重要な操作を行う際には、ステップアップ認証(二段階認証)などの追加セキュリティレイヤーを簡単に統合できます。


2. トークンボルト(Token Vault)

AIエージェントがユーザーの代わりに外部サービスのAPIを呼ぶための安全な仕組みです!

Auth0がGoogleやSlackなどの外部トークンを安全に保管し、必要なときだけトークンを交換(Token Exchange)して渡すことで、アプリは再認証なしで外部APIを安全に呼び出せます

参考) TokenVaultについて
https://auth0.com/docs/secure/tokens/token-vault


3. 非同期認可(Asynchronous Authorization)

人間の承認を「後から安全に行う」仕組みです!

CIBA や PAR による非同期認可を利用して、AIが自律的にタスクをこなしていても、重要な操作だけ人間が承認できます

これにより、AIが自動で処理を進めていても、人の判断が必要な操作だけを後から安全に承認できるようになります。


4. RAGのためのFGA(Fine-Grained Authorization)

RAG(Retrieval-Augmented Generation)で扱うデータに対して、細かいアクセス制御を行える仕組みです。

Auth0 FGAを利用することで、「ユーザーが閲覧権限を持つデータだけを LLM に渡す」ように制御できます。

これにより、RAG の検索クエリやベクトル検索の段階で、ユーザー権限に応じたデータフィルタリングが可能になるため、情報漏洩のリスクを大幅に減らせます。


Auth0 Gen for AI を活用することで、認証・権限・トークン管理といった煩雑な処理をAuth0側に任せられるため、開発者はAIアプリケーション本来の実装に集中できるようになります。


Auth0 セットアップ手順

ここからは、Auth0の基本的なセットアップ手順の紹介になります。

「Auth0 Gen for AI」のサンプルコードが、Auth0のセットアップ例として非常に分かりやすかったため、それを参考にセットアップ手順をまとめてみました。

Auth0はドキュメントが充実しているのですが、多機能ゆえに設定項目が多くて迷いやすい部分もあります。今回は、初心者の方が特に詰まりやすそうなポイントを中心に整理しています。

Auth0 Gen for AIのサンプルコードは下記です
https://auth0.com/ai/docs/get-started/overview

今回は、
1. User Authentication
2. Call Your APIs on User’s Behalf
3. (番外編) Google連携

の三つについて紹介します!

1. User Authentication の手順紹介

基本的には、公式ドキュメントに従ってアプリケーションを作成していけば問題ないです!

Auth0 のアカウントを作成した後に、Auth0 の Applicationを作成します。

その後上記で作成したアプリケーションに対して、ドキュメントに記載されている各種項目を設定してください!

Appicationの設定が完了したら、公式ドキュメントのファイルをダウンロードして、ローカルのディレクトリに配置してください!

その後、パッケージインストールと環境変数を設定してください。

この時、AUTH0_SECRETの値は、32バイトのランダムな16進文字列を自分のLocal上で作成し、その値を入力してください。

上記の操作が完了した後に npm run devを実行すると、プロジェクトが立ち上がると思います!

ログインをクリックすると、公式サイトに表示されている画面が出てくると思います。

2. Call Your APIs on User’s Behalf の手順説明

このチュートリアルでは、Auth0のアクセストークンからユーザー情報を取得するまでの一連の流れを学べます。
https://auth0.com/ai/docs/get-started/call-your-apis-on-users-behalf

今回は、LangGraph.js + Next.js で試してみます!

もし先ほどの手順で 「Auth0 Application」を作成されている方がいれば、prerequisites の 「1. Create an Auth0 Account」と「2. Create an Auth0 Application」はスキップしてください!

まだ作成していなければ、先述の手順を参考にしつつ「Auth0 Application」の作成を進めてください。

上記の手順が完了した後は、「Auth0 API」 の作成に移ります。

「識別子 (API identifier)」は、他のAPIと被らない一意な値を入力してください。(Auth0は、https://example.com/ のようなURLの使用を推奨しています!)

ここでは、今後の作業のために「https://{ドメイン名}.langgraph.app」とします。

参考

https://auth0.com/docs/get-started/auth0-overview/set-up-apis

その後、作成したAPIの設定メニューから「オフラインでのアクセスを許可する」を有効化します。

また、先ほど設定した識別子をメモしておきます。

上記の手順が終わった後は、OpenAIのAPI Keyも発行してください。

その後、「1.」の時と同じようにアプリケーションファイルをダウンロード後、パッケージインストールと環境変数を設定してください。

この時にダウンロードファイルに環境変数ファイルのサンプルが含まれていなかったので、下記内容を参考にしつつ、「.env」という名前で新規ファイルを作成してください!

# Auth0 configuration
APP_BASE_URL="http://localhost:3000"
AUTH0_SECRET="use [openssl rand -hex 32] to generate a 32 bytes value"
AUTH0_DOMAIN="https://{yourDomain}"
AUTH0_CLIENT_ID="{yourClientId}"
AUTH0_CLIENT_SECRET="{yourClientSecret}"
AUTH0_AUDIENCE="{yourAudience}"
AUTH0_SCOPE="openid profile email"

# Database configuration
DATABASE_URL="postgresql://postgres:postgres@localhost:5432/ai_documents_db"

# LANGGRAPH
LANGGRAPH_API_URL=http://localhost:54367
OPENAI_API_KEY="YOUR_API_KEY"
LANGCHAIN_CALLBACKS_BACKGROUND=false

AUTH0_DOMAIN, AUTH0_CLIENT_ID, AUTH0_CLIENT_SECRETは、アプリケーションの設定画面から取得できます。

AUTH0_AUDIENCEは、先ほどAPIで設定した識別子を入力してください。

その上で、公式ドキュメントに記載されている手順に従い、各種ファイルを作成していってください。

上記ファイル作成が完了した後、開発環境を立ち上げます。npm run all:dev コマンドを入力してください。NextJSとLangGrapfの両方が立ち上がります。

その後、チャット入力欄に「Who Am I?」と入力すると、ログインした時のユーザーアカウント情報が帰ってきます。

ここではテストアカウントでログインしていたので、上記の正しいメールアドレスが返ってきています。

3. (番外編) Google 連携

OAuth認証ではGoogleとの連携がよく利用されるため、その設定手順についても簡単に紹介します!
先ほどの 「1., 2. の手順」で行った ApplicationとAPIの作成が完了していない方は、上記の手順を参考にしてこれらを作成してください!

上記のリソース作成後、下記のドキュメントに従ってGoogle連携を行います!

https://auth0.com/ai/docs/integrations/google

まず、Google Cloud のプロジェクトを作成してください。
その後、ドキュメントに従ってGoogleとAuth0を連携していきます。

Google Cloud の Auth 同意画面の項目から、ブランディングを作成してください。

その後、ブランディングの下部に存在する「承認済みドメイン」に、「auth0.com」 を登録して保存ボタンを押下します。

次に、データアクセス からアプリのユーザーに許可を求める権限を設定します。

ここでは、ユーザーのEmail情報をAuth0から取得したいので「.../auth/userinfo.email」を有効化します。

左下のsaveボタンを押さないと反映されないので、注意してください!

その後、Google OAuth Clientクライアントを作成します。
クライアントの項目から、「クライアントを作成」をクリックしてください。

アプリケーションの種類で「ウェブアプリケーション」を選んだ上、ドキュメントに記載されている各種項目を設定していきます。

この時、公式ドキュメントに記載されている「Domain」は、「Auth0 Application」の「設定画面」から取得可能です。

その後、作成ボタンを押してクライアントを作成してください。
また、クライアント作成後に表示される「クライアント ID」と「クライアント シークレット」は後ほど利用しますので、保存しておいてください!

次にAuth0で、GoogleのOAuth設定を行っていきます。

認証タブのソーシャルから、google-oauth2をクリックしてください。
(新規登録された方は、Appleアイコンは表示されていないです!)

設定画面の「General」でClient IDとClient Secretの二つを設定します。

先ほどのGoogle OAuth Clientクライアント作成時に取得した値を入力してくだださい!

その後「Permissions」の Access TypeのOffline AccessをOnにしてください!

最後に、一番下の変更を保存ボタンを押して、保存してください。

その後、「2.」で立ち上げていたアプリケーションに再度アクセスして今のユーザーからログアウトした上、Sign upから「Continue with Google」をクリックすると、ログインできると思います!

まとめ

Auth0は、開発者にとって使いやすくて、日頃からお世話になっている素敵なサービスです。
気になった方は、ぜひ一度試してみてください!

また、Gen For AIのサンプル集も公開されています。あわせてチェックしてみてください。

https://auth0.com/ai/docs/sample-apps

Discussion