/server/api をログインで保護する
azure static web apps の Eash Authに、トークンストアからidトークンやらアクセストークンを取得する機能はないそうです。代わりに、サーバー要求のヘッダーにログインユーザー情報が格納されるそうです。を確認してみました。
export default defineEventHandler((event) => {
const header = getHeader(event, 'x-ms-client-principal')
if (!header)
throw createError({ statusCode: 401, statusMessage: "Unauthorized" })
const encoded = Buffer.from(header, 'base64');
const decoded = encoded.toString('ascii');
const clientPrincipal = JSON.parse(decoded)
if (!clientPrincipal.userRoles!.includes("administrator"))
throw createError({ statusCode: 401, statusMessage: "Unauthorized" })
return {
api: 'works'
}
})
getHeaderは、H3 (unjs/h3)のユーティリティです。最初、useRequestHeaderを試しましたが、これは実行時に useRequestHeader is not defined になります。
api側でも無事、ログイン情報を取得することができました。swa cli で実行すればローカルでのテストでも確認することができます。アクセストークンをもらうよりもこっちの方が楽ちんな気もします。Easy Authの実装を信じるしかありません。とにかくこれでEasy Authの検証は終わりです。このブログのようなサイトであれば十分でしょう。
登録:2024-07-26 01:43
更新:2024-07-26 01:48
by nasu38yen