いまさらNuxt3(その4)
はじめに
前回の(その3)は、nuxt-auth-utils で Google Cloud 認証でした。あと3つやっていきます。
できれば、スクショ少なめ、味濃いめで行きたいのですが…
どんどんやる
Azure
Microsoft Entra ID
の 管理
の アプリの登録
で 新規登録
します。
作ったアプリで、概要
の 基本
の リダイレクトURI
をクリックして開いて、http://localhost:3000/auth/microsoft
を登録します。また、管理
の 証明書とシークレット
で 新しいクライアントシークレット
します。
Azure の場合は、クライアントID
と クライアントシークレット
に加えて テナントID
もメモってください。
プロバイダ毎に必要になる値は、以下を参照ください。
Auth0
アカウントが無い方は、無料プランでアカウントを作成しましょう。
一通り終わったら、また、アカウントをお持ちの方は、Applications
の Applications
にある Default App
や Create Aopplication
した Applicaiton を開いて、Domain
と Client ID
と Client Secret
をメモってください。また、もう少し下にある Application URIs
の Allowed Callback URLs
に http://localhost:3000/auth/auth0
を登録しておきます。
認証されるユーザーは、User Management
の Users
で Create User
しておきましょう。
Cognito
AWS アカウントはあるものとします。管理コンソールにログインしたら、Cognito
の ユーザープール
で ユーザープールを作成
します。
こんな感じですが、アプリケーションタイプは 従来のウェブアプリケーション
がおすすめです。リターン URL
も追加しておきます。Cognito は、リージョン
と ユーザープールID
が必要になります。ユーザープールID
は一覧や概要でメモっておきます。クライアントID
と クライアントシークレット
は、アプリケーションクライアントにありますので、アプリケーションクライアントをセットアップしてからメモってください。
そのまま管理コンソールで、認証
の サインアップ
を開いて、セルフサービスのサインアップ
では、今回の目的上、予め登録済みのメンバーのみ許可したいので、自己登録は無効にします。
さらに、アプリケーション
の アプリケーションクライアント
で、作成したクライアントを開きます。ログインページ
タブで 編集
して、OpenID Connect のスコープ
に プロファイル
を追加します。
最後に、ユーザー管理
の ユーザー
で認証するユーザーを登録しておきます。
やっと Nuxt3
と言っても、前回とほぼ同じです。以下のをコピーして、リダイレクト先を Cookie から取得するように改造します。
また、ここまでメモった内容は、.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 なので、これを環境変数でも書き換えられるように、以下のように変更しておきます。
@@ -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 })
}
},
)
@@ -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
とすることで上書きできます。この設定だと以下のようになります。
おわりに
やはり、スクショ多めになってしまいましたが、いかがでしたでしょうか。
一旦、ここまでにしたいと思います。
Discussion