私はasp.netのコアWebアプリケーションをazureでアプリケーションサービスとしてホストしています。私はOpenId ConnectをAzure ADと併用するようにアプリケーションを設定しました。アプリケーション内で認証が行われます(認証を処理するためにアプリケーションサービス自体を設定していません)。App Service CDNを認証できないようにする
アプリサービスに直接アクセスすると(またはカスタムドメイン名を使用する場合でも)すべてうまく動作します。
私はアプリサービス内でCDNサービスを有効にしました。最初の伝播が終了したら、ブラウザを開いてCDNアドレス([name] .azureedge.net)に移動します。
Azure ADにリダイレクトされますが、認証プロセスが完了するとエラーが発生します。
Azure ADへのリダイレクトがCDNから戻ったときのように、アプリケーションサービスのURLはreturn_url
に設定されていたようです。だからAzure ADが私をリダイレクトしたとき、私はもはやCDNに当たらなかった。 Azure ADへのリダイレクトが起こると、ブラウザにクッキーが置かれます。私は自分のサイトがそのクッキーを探していると思われますが、ブラウザーは別のドメインによって設定されているため、送信しませんでした。
OpenIdConnectOptionsのCallbackPathを完全なURL(スキーマ、ホスト、ドメインなど)に設定しようとしましたが、アプリケーションが初期化され、パスが '/'で始まらなければならないというエラーがスローされますおそらくそれは要求のドメインのルートからのパスを期待している)。
うまくいけば、誰かがこの問題に遭遇し、私が間違っていることを教えてくれることを願っています。
"AzureAd": {
"AADInstance": "https://login.microsoftonline.com/",
"ClientSecret": "REDACTED",
"CallbackPath": "/signin-oidc",
"ClientId": "REDACTED",
"TenantId": "REDACTED",
"Scopes": [
"openid",
"profile",
"offline_access"
]
}
adSettings.Authority
としてPOCOで定義されています:
var openIdOptions = new OpenIdConnectOptions
{
ClientId = adSettings.ClientId,
ClientSecret = adSettings.ClientSecret,
Authority = adSettings.Authority,
CallbackPath = adSettings.CallbackPath,
ResponseType = OpenIdConnectResponseType.CodeIdToken,
Events = new OpenIdConnectEvents { OnTicketReceived = AddApplicationRolesToUserClaimsAsync, OnAuthorizationCodeReceived = RedeemCodeAsync }
};
foreach (var scope in adSettings.Scopes.Concat(settings.MicrosoftGraph.Scopes))
openIdOptions.Scope.Add(scope);
application.UseOpenIdConnectAuthentication(openIdOptions);
adSettingsは、以下のappsettings.jsonから水和されたPOCOです:
要求ごとは、ここに私のOIDC構成です
public string Authority => $"{AADInstance}{TenantId}/v2.0";
コールバックパスを設定してもうまくいきません。あなたが気付いたように、それは相対URLです。私はこの厳密なシナリオを自分でやろうとはしませんでした:) AADでどのようにリダイレクトURLを設定しましたか? OIDC設定の一部を表示できますか? – juunas
私は新しい[統合アプリケーション](https://apps.dev.microsoft.com)を使用しています。私はアプリケーションのサービスURLを(/ signin-oidcを付けて)設定するだけです。 CDNエンドポイントを追加して正常に動作させる必要があることは知っていますが、まだ問題が発生しているところではありません。 –
さて、あなたはそのURLにあなたを戻すでしょうか? CDN URLを追加してみますか?:) – juunas