OpenID Connect 서버가 특정 쿼리 문자열 세트를 반환하도록 인증 할 때 시나리오를 처리하려고합니다. 조건이 일치하면 본질적으로 사용자를 "액세스 거부"페이지로 리디렉션하려고합니다. 어떤 이유로 든 리디렉션을 포함하는 주석 처리 된 행은 실제로 발생하지 않습니다. 내가하는 일을하는 데 더 나은/다른 방법이 있습니까? 여기.NET 핵심 OpenID Connect 미들웨어에서 리디렉션 하시겠습니까?
은 오픈 ID 연결 미들웨어가 Startup.cs에서 구성 방법은 다음과 같습니다
services.Configure<OpenIdConnectOptions>(options =>
{
// ...
options.Events = new OpenIdConnectEvents
{
OnMessageReceived = context =>
{
if (context.HttpContext.Request.Query.ContainsKey("error"))
{
context.HandleResponse(); // <-- Fires
context.Response.Redirect("/AccessDenied"); // <-- Redirect fires but user is not redirected
}
return Task.FromResult(0);
}
}
}
UPDATE :는 다음 비틀기 작업을 얻었다 :
이options.Events = new OpenIdConnectEvents
{
OnRemoteFailure = context =>
{
context.HandleResponse();
context.Response.Redirect("AccessDenied?error=" + context.Failure.Message);
return Task.FromResult(0);
},
// ...
};
'context.HandleResponse();'을 (를) 호출하지 않으셨습니까? – Brad
context.HandleResponse()를 제거해도 아무 효과가 없으며 사용자는 콜백 경로 uri로 이동하기 전에 궁극적으로 리디렉션되지 않습니다. – ianpoley