1713033960
2024-04-12 15:21:18
私は最近、以下を使用している顧客と仕事をしていました。 トークンを強化するための Azure AD B2C API コネクタ 外部情報源からの主張がある。 彼らは外部ソースとして Azure Function App を使用しています。 このセットアップの要求に応じて、B2C で動作するようにパブリック IP 経由で Azure Function App を公開しました。 ただし、企業のセキュリティ制限ポリシーにより、Function App からパブリック エンドポイントを削除し、VNET へのプライベート エンドポイントを使用する必要があります。
彼らは Function App をインターネット上で安全に公開するための 2 つのオプションを考えました。 Azure API Management インスタンスから仮想ネットワークへ – エクスターナル モード エクスターナル モードの APIM または Azure Application Gateway を使用します。 ただし、どちらの場合も、ユーザー フローに API コネクタを追加した後に B2C 認証プロセス エラーが発生します。
最初に、B2C および APIM または Azure Application Gateway 側で収集されたエラー メッセージを調査しました。 しかし、後になって、問題の主な原因は別の場所にあることに気付きました。 これは、Function App の構築に使用される ASP.NET Core フレームワークです。
デフォルトの FowardedHeaders ミドルウェア設定を変更する必要があります。 それ以外の場合、APIM または Application Gateway によって送信される X-Forwarded ヘッダーは KnownProxies および KnownNetworks のリストに含まれていないため、無視されます。 概念をよりよく理解するには、次のリンクを参照してください。
そこで、次のような変更を加えました。
1. ASPNETCORE_FORWARDEDHEADERS_ENABLED アプリケーション設定を Function App 構成に追加しました。
2. 関数アプリのコードに Startup.cs ファイルを追加しました。
System.Collections.Generic を使用します。
Microsoft.AspNetCore.Builder を使用します。
Microsoft.Azure.Functions.Extensions.DependencyInjection を使用します。
Microsoft.Extensions.DependencyInjection を使用します。
[assembly: FunctionsStartup(typeof(TestAPIFunctionApp.Startup))]
名前空間 TestAPIFunctionApp
{
パブリック クラス スタートアップ : FunctionsStartup
{
public override void Configure(IFunctionsHostBuilder ビルダー)
{
builder.Services.Configure
{
options.ForwardedHeaders = Microsoft.AspNetCore.HttpOverrides.ForwardedHeaders.XForwardedFor | Microsoft.AspNetCore.HttpOverrides.ForwardedHeaders.XForwardedProto | Microsoft.AspNetCore.HttpOverrides.ForwardedHeaders.XForwardedHost;
options.KnownNetworks.Clear();
options.KnownProxies.Clear();
// フロント ドア、アプリケーション ゲートウェイ、APIM、b2clogin FQDN、および尊重したいヘッダーを送信するその他のホストをここに入力します
options.AllowedHosts = 新しいリスト
});
}
}
}
これで問題は解決します。 「拡張されたクレーム」が表示されるようになりました。
#Azure #B2C #API #コネクタ #関数アプリ #をエラーなしで保護する