Azure AD Authをセットアップした非常にシンプルなAzure関数がC#にあります。 Express設定を使用して、関数構成でアプリ登録を作成しました。
public static class IsAuthenticated
{
[FunctionName("IsAuthenticated")]
public static async Task<IActionResult> Run(
[HttpTrigger(AuthorizationLevel.Anonymous, "get", "options", Route = null)]
HttpRequest req,
ILogger log)
{
return new OkObjectResult("You are " + req.HttpContext.User.Identity.Name);
}
}
ブラウザで関数にアクセスすると、すべてが期待どおりに機能します(ログインしていない場合は、ログインしてAPIにリダイレクトする必要があります)。しかし、ベアラートークンが必要な場所で関数にアクセスしようとすると、401 Unauthorized
エラー。さらに奇妙なことに、Azureポータルで関数を実行することもできません。
しかし、トークンは問題なく取得され、リクエストに追加されました。
この問題を解決するためにいくつかのことを試しました。最初に、それはCORSの問題であると考え(私はいくつかの問題も抱えていたため)、CORSを*を受け入れるように設定しましたが、何も変更されませんでした。
次に、APIログインエンドポイントをリダイレクトに追加し、暗黙的な許可を設定してアクセストークンも受け入れるようにしましたが、まだ機能しません。
私が見落としたことはありますか?アプリ登録のエクスプレス構成は、Azureの関数で機能しないのですか?
編集:
@ thomas-schreiter によって示唆されているように、リダイレクトに関数アプリへのURLを入れても何も変わりません(スクリーンショットで設定を試してみましたが、それぞれの値を独自のものに置いています)。
編集2:
また、手動でベアラートークンを取得しようとしました Postmanを使用して ですが、APIを呼び出すと、依然として401に遭遇します。