Zenn

いまさらNuxt3(その4)

2025/03/18に公開

はじめに

前回の(その3)は、nuxt-auth-utils で Google Cloud 認証でした。あと3つやっていきます。

https://zenn.dev/robon/articles/a7b7f3fba60baf

できれば、スクショ少なめ、味濃いめで行きたいのですが…

どんどんやる

Azure

https://portal.azure.com/

Microsoft Entra ID管理アプリの登録新規登録 します。

作ったアプリで、概要基本リダイレクトURI をクリックして開いて、http://localhost:3000/auth/microsoft を登録します。また、管理証明書とシークレット新しいクライアントシークレット します。

Azure の場合は、クライアントIDクライアントシークレット に加えて テナントID もメモってください。
プロバイダ毎に必要になる値は、以下を参照ください。

https://github.com/atinux/nuxt-auth-utils/blob/main/playground/.env.example

Auth0

アカウントが無い方は、無料プランでアカウントを作成しましょう。

https://auth0.com/jp/signup

一通り終わったら、また、アカウントをお持ちの方は、ApplicationsApplications にある Default AppCreate Aopplication した Applicaiton を開いて、DomainClient IDClient Secret をメモってください。また、もう少し下にある Application URIsAllowed Callback URLshttp://localhost:3000/auth/auth0 を登録しておきます。

認証されるユーザーは、User ManagementUsersCreate User しておきましょう。

Cognito

AWS アカウントはあるものとします。管理コンソールにログインしたら、Cognitoユーザープールユーザープールを作成 します。

こんな感じですが、アプリケーションタイプは 従来のウェブアプリケーション がおすすめです。リターン URL も追加しておきます。Cognito は、リージョンユーザープールID が必要になります。ユーザープールID は一覧や概要でメモっておきます。クライアントIDクライアントシークレット は、アプリケーションクライアントにありますので、アプリケーションクライアントをセットアップしてからメモってください。

そのまま管理コンソールで、認証サインアップ を開いて、セルフサービスのサインアップ では、今回の目的上、予め登録済みのメンバーのみ許可したいので、自己登録は無効にします。

さらに、アプリケーションアプリケーションクライアント で、作成したクライアントを開きます。ログインページ タブで 編集 して、OpenID Connect のスコーププロファイル を追加します。

最後に、ユーザー管理ユーザー で認証するユーザーを登録しておきます。

やっと Nuxt3

と言っても、前回とほぼ同じです。以下のをコピーして、リダイレクト先を Cookie から取得するように改造します。

https://github.com/atinux/nuxt-auth-utils/blob/main/playground/server/routes/auth/microsoft.get.ts

https://github.com/atinux/nuxt-auth-utils/blob/main/playground/server/routes/auth/auth0.get.ts

https://github.com/atinux/nuxt-auth-utils/blob/main/playground/server/routes/auth/cognito.get.ts

また、ここまでメモった内容は、.env に書き込んでください。

NUXT_SESSION_PASSWORD=
# Google OAuth
NUXT_OAUTH_GOOGLE_CLIENT_ID=
NUXT_OAUTH_GOOGLE_CLIENT_SECRET=
# Microsoft OAuth
NUXT_OAUTH_MICROSOFT_CLIENT_ID=
NUXT_OAUTH_MICROSOFT_CLIENT_SECRET=
NUXT_OAUTH_MICROSOFT_TENANT=
# Auth0 OAuth
NUXT_OAUTH_AUTH0_CLIENT_ID=
NUXT_OAUTH_AUTH0_CLIENT_SECRET=
NUXT_OAUTH_AUTH0_DOMAIN=
# Cognito
NUXT_OAUTH_COGNITO_USER_POOL_ID=
NUXT_OAUTH_COGNITO_CLIENT_ID=
NUXT_OAUTH_COGNITO_CLIENT_SECRET=
NUXT_OAUTH_COGNITO_REGION=

認証方法を定義しているのは、middleware からの遷移先の URL なので、これを環境変数でも書き換えられるように、以下のように変更しておきます。

middleware/auth.ts
@@ -4,7 +4,8 @@ export default defineNuxtRouteMiddleware(
     if (!loggedIn.value) {
       const cookie = useCookie<string | null>('REDIRECT_COOKIE_NAME')
       cookie.value = to.fullPath
-      return navigateTo('/auth/google', { external: true })
+      const config = useRuntimeConfig()
+      return navigateTo(config.public.loginPath, { external: true })
     }
   },
 )
nuxt.config.ts
@@ -7,6 +7,11 @@ export default defineNuxtConfig({
     'nuxt-auth-utils',
   ],
   devtools: { enabled: true },
+  runtimeConfig: {
+    public: {
+      loginPath: '/auth/google',
+    },
+  },
   compatibilityDate: '2024-11-01',
   eslint: {
     config: {

こうしておくと、.env や環境変数で NUXT_PUBLIC_LOGIN_PATH=/auth/microsoft とすることで上書きできます。この設定だと以下のようになります。

おわりに

やはり、スクショ多めになってしまいましたが、いかがでしたでしょうか。
一旦、ここまでにしたいと思います。

GitHubで編集を提案
株式会社ROBONの技術ブログ

Discussion

ログインするとコメントできます