Hasura の JWT Claims(AAD B2C) Mapping を試してみる
https://hasura.io/blog/azure-active-directory-integration-hasura-jwt-claims-mapping を試してみて、詰まったところのメモを残す
Hasura cloudでプロジェクトを作った時の導線が微妙に違う
ドキュメントでは繋ぐDBはHerokuになっているが、これは古そう
neonが無料で使えるようなのでこれを使ってみる
手順通り users
テーブルを作ってみる
Row select permissionsについて、 x-hasura-user-id
を指定すると書いてあるが、キャプチャでは、 X-Hasura-User-Id
となっているので、それに合わせる
影響があるかはよくわからないが、、
「Set up Azure Functions」をやる
func
コマンドって初めて見たけど、「Azure Functions Core Tools」っぽいな
インストールしてみる
ディレクトリ名の指定はなかったので、適当につけた
$ mkdir azure-function-for-hasura
$ cd azure-function-for-hasura
$ func init .
func init .
の後に対話で色々聞かれたが、ドキュメント通りnode, javascriptを選択してみる
$ func new
Running with stdin\stdout redirected. Command must specify --template, and --name explicitly.
See 'func help function' for more details
templateとnameの指定が必要っぽい
https://learn.microsoft.com/ja-jp/azure/azure-functions/functions-core-tools-reference?tabs=v2 によると、func templates list
で分かるっぽい
$ func templates list
JavaScript Templates:
Azure Blob Storage trigger
Azure Cosmos DB trigger
Durable Functions activity
Durable Functions entity
Durable Functions Entity HTTP starter
Durable Functions HTTP starter
Durable Functions orchestrator
Azure Event Grid trigger
Azure Event Hub trigger
HTTP trigger
IoT Hub (Event Hub)
Kafka output
Kafka trigger
Azure Queue Storage trigger
RabbitMQ trigger
SendGrid
Azure Service Bus Queue trigger
Azure Service Bus Topic trigger
SignalR negotiate HTTP trigger
SQL Input Binding
SQL Output Binding
SQL Trigger
Timer trigger
Azure Blob Storage trigger
Azure Cosmos DB trigger
Durable Functions entity
Durable Functions orchestrator
Azure Event Grid trigger
Azure Event Hub trigger
HTTP trigger
Azure Queue Storage trigger
Azure Service Bus Queue trigger
Azure Service Bus Topic trigger
Timer trigger
Dapr Publish Output Binding
Dapr Service Invocation Trigger
Dapr Topic Trigger
HTTP trigger
がいっぱいあるのが気になるが、ドキュメントにはこれが書かれているのでこれを指定してみる
func new --template "HTTP Trigger" --name "getHasuraInfo"
で、できた
$ npm install
up to date, audited 41 packages in 1s
3 packages are looking for funding
run `npm fund` for details
1 low severity vulnerability
To address all issues, run:
npm audit fix
Run `npm audit` for details.
$ func start
Azure Functions Core Tools
Core Tools Version: 4.0.5611 Commit hash: N/A +591b8aec842e333a87ea9e23ba390bb5effe0655 (64-bit)
Function Runtime Version: 4.31.1.22191
[2024-04-16T13:30:43.233Z] File 'C:\Program Files\dotnet\dotnet.exe' is not found, 'dotnet' invocation will rely on the PATH environment variable.
[2024-04-16T13:30:44.755Z] File 'C:\Program Files\dotnet\dotnet.exe' is not found, 'dotnet' invocation will rely on the PATH environment variable.
[2024-04-16T13:30:45.204Z] Worker process started and initialized.
Functions:
getHasuraInfo: [GET,POST] http://localhost:7071/api/getHasuraInfo
For detailed output, run func with --verbose flag.
も普通にできた
VSCodeのAzure Functions拡張でデプロイするとよさそうとのことなのでやってみる
Hasura公式のリンク先で、SSL証明書のエラーが発生しているのでAzureの公式を見てやってみる
Azure functionはグローバルでユニークキーでないといけないのか、、
とりあえず、作れた
VSCodeの拡張を使用したdeploy、開発者体験良い感じ
に従って、AzureAD B2Cのテナントを作った
にしたがって、ポリシーキーを作成した
「Custom policy starter pack」の直前までやった
ドキュメントが英語なので、Azure Portalの言語設定も英語にした
Azure Portalの言語設定を日本語にしていると、何を指してるのかよくわからなかった
今日は遅いので、明日は
の 「Custom policy starter pack」からやる
HasuraのドキュメントにFacebookのログインはスキップすると書いてあるので、 SocialAndLocalAccounts
ではなく、 LocalAccounts
のstarter packを使う
IdentityExperienceFrameworkAppId
とProxyIdentityExperienceFrameworkAppId
を書き換えるときはMetadataのブロックと、InputClaimsのブロック両方を書き換えた
ポリシーのuploadをしてログインしてみようとすると
The application with identifier '<ProxyIdentityExperienceFrameworkのapplication id>' has not been granted consent and is unable to be used for local accounts.
のエラーが出る、、
や を見てやってみたが、うまくいかず、、
SocialAndLocalAccounts
べきだったかもしれない
が、エラーメッセージ的に、そういうことを指摘されているわけでもないように思える
とりあえずスキップして次を進めてみるか
(というか、Hasura公式に載ってない、、