나는 하늘에서 app 서비스로 호스팅되는 asp.net 핵심 웹 응용 프로그램을 보유하고 있습니다. Azure AD와 OpenId Connect를 사용하도록 애플리케이션을 구성했습니다. 응용 프로그램 내에서 인증이 발생합니다 (인증을 처리하기 위해 응용 프로그램 서비스 자체를 구성하지 않습니다).인증 서비스와 함께 작동하는 App Service CDN을 얻을 수 없습니다.
앱 서비스를 직접 방문하거나 (또는 맞춤 도메인 이름을 사용하는 경우에도) 모든 것이 잘 작동합니다.
나는 앱 서비스 내에서 CDN 서비스를 사용하도록 설정했습니다. 초기 전파가 끝나면 브라우저를 열고 CDN 주소 ([name] .azureedge.net)로 이동합니다.
Azure AD로 리디렉션되지만 인증 프로세스가 완료되면 오류가 발생합니다.
Azure AD 로의 리다이렉트가 CDN에서 돌아 왔을 때, 앱 서비스의 URL은 return_url
으로 설정되었습니다. Azure AD가 나를 리디렉션했을 때, 나는 더 이상 CDN을 치지 않았습니다. Azure AD로 리디렉션되면 브라우저에 쿠키가 있습니다. 나는 내 사이트가 그 쿠키를 찾고 있다고 의심하지만 브라우저는 다른 도메인에 의해 설정 되었기 때문에 그것을 보내지 않았다.
OpenIdConnectOptions의 전체 경로 (스키마, 호스트, 도메인 등)에 CallbackPath를 구성하려고했지만 응용 프로그램이 초기화 될 때 경로가 '/'로 시작해야한다는 오류가 발생합니다 아마도 그것은 요청에서 도메인의 루트로부터의 경로를 기대하고 있습니다).
바라건대 다른 누군가가이 문제를 발견하고 내가 잘못하고있는 것을 말해 줄 수 있기를 바랍니다.
"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