OIDC 솔루션의 Thinktecture IdentityServer CodeFlowClient 샘플을 살펴 보았습니다. 나는 달리는 데 어려움을 겪고있다. Thinktecture.IdentityModel.Oidc 프로젝트에 정의 된 OpenIdConnectAuthenticationModule을 사용합니다. 이 클래스 내에서 쿠키에서 oidcstate를 읽는 데 문제가 있습니다. 다음 코드를 참조하십시오.Thinktecture IdentityServer 샘플 CodeFlowClient 작동 시도
// read and parse state cookie
var cookie = new ProtectedCookie(ProtectionMode.MachineKey);
var storedState = cookie.Read("oidcstate");
ProtectedCookie.Delete("oidcstate");
var separator = storedState.IndexOf('_');
변수 storedState의 값은 null입니다. 내가 헷갈리는 부분은 oidcstate가 AuthenticateAsync 후에 호출되는 OnEndRequest로 작성된다는 점이다. AuthenticateAsync에는 쿠키 읽기 코드가 있습니다. 아래 OnEndRequest의 코드를 참조하십시오.
var cookie = new ProtectedCookie(ProtectionMode.MachineKey);
cookie.Write("oidcstate", state + "_" + returnUrl, DateTime.UtcNow.AddHours(1));
oidcstate가 어디에 쓰여지는 곳이 없으므로 내가 잘못했는지 모른다. 그것이 읽히기 전에 어떻게 oidcstate를 쓸 수 있습니까?
iodcClient 구성의 appRelativeCallbackUrl 필드는 무엇입니까? 기본값은 "~/oidccallback"입니다. AuthenticateAsync에서는 AppRelativeCurrentExecutionFilePath 요청과 비교됩니다. 아래 코드를 참조하십시오.
var appRelativeCallbackUrl = config.AppRelativeCallbackUrl;
if (context.Request.AppRelativeCurrentExecutionFilePath.Equals(appRelativeCallbackUrl, StringComparison.OrdinalIgnoreCase))
{
값이 "~/Home"이어야합니까?
이에 어떤 도움을 크게 감상 할 수있다,
감사 벤
답장을 보내 주셔서 감사합니다. 나는 Authorize 속성을 가진 Home/Claims가 아닌 다른 페이지를 브라우징했기 때문에 길을 잃었다. – user3221987