3

Facebook Owin 인증을 사용 중이며 어느 정도 Microsoft 샘플을 따르고 있습니다. 처음으로 사용자가 로그인하면 더 많거나 적습니다. 다 괜찮습니다. 하지만 로그 아웃하고 다시 시도하면 이전의 .AspNet.Correlation.Facebook은 제거되지 않고 빈 문자열로 설정됩니다. 그래서 API/getexternallogin 내 다음 호출 피들러에서 다음과 같습니다 : 우리가 correlationId가를 생성하고이 시점에서 여러 쿠키가있는 경우OWIN 보안에서 여러 쿠키 문제가 발생했습니다. AuthenticationHandler

enter image description here

이 쇼 스토퍼되지이다. 응답에서, 나는 새로운 correlationId가로 설정 : 페이스 북은 다시 "/ 로그인 절차 - 페이스 북"에 호출 할 때

enter image description here

나중에, 우리는 correlationId가 ValidateCorrelationId의 방법을 확인하려고합니다.

enter image description here

그래서 새로운 correlationId가 설정되었습니다하지만 Request.Cookies [ "ValidateCorrelationId"], 그것은 빈 문자열을 반환을 갈 때 어떤 값을 추가 쿠키는 의미 : 요청이처럼 보인다.

코드를 확인한 결과이 쿠키를 수정하는 유일한 방법은 GenerateCorrelationId 및 ValidateCorrelationId 인 것 같습니다. 이러한 방법의 구현은 여기에서 찾을 수 있습니다

http://katanaproject.codeplex.com/SourceControl/latest#src/Microsoft.Owin.Security/Infrastructure/AuthenticationHandler.cs

이 이상하게 브라우저 문제를보고하지 않는 것 :

enter image description here

어떤 아이디어가 많이 이해할 수있을 것이다.

답변

2

확인이 나에게 좌절의 공정한 조금을 가지고 있지만 Response.Cookies.Delete가 ("AspNet.Correlation.Facebook가.") ValidateCorrelationId 방법으로 호출 될 때, 그것은 응답에 다음과 같은 전송했습니다

enter image description here

따라서 "만료"값은 연결되어 두 개의 별도 "쿠키 세트"로 처리됩니다. 따라서 쿠키는 만료되지 않지만 값은 빈 문자열로 설정됩니다. "Thu"가 그것을 일으킨 후에는 쉼표처럼 보입니다.

내가 Response.Cookies.Delete ("AspNet.Correlation.Facebook을.") 주석이었다 마련하고, 대신 다음되지 수행 한 수정 :이

Response.Headers.Add("Set-Cookie", new[] { CorrelationKey + "=; path=/; expires=Fri 02-Jan-1970 00:00:00 GMT" }) 

없음 쉼표를하고 노력하고 있습니다 지금.

이것은 OWIN에서 진정한 버그처럼 보입니다.

+0

내가 비슷한 것을 직면하고 있다고 생각합니다. 코드 플렉스에서 버그를 신고 했습니까? –

+0

흠, 나는 그 때 생각했다. 방금 한 번 봐서 찾을 수 없었습니다. 그러나 여기에 언급 된 해결 방법이 효과가 있습니다. – Hossein

+0

쿠키를 만료해도 괜찮습니다. 타사 라이브러리 (예 : IdentityServer)를 사용하거나 context.Authentication.SignOut 메서드를 사용하는 경우이 방법은 작동하지 않습니다. 이것은 OWIN/Katana에서 상당히 좌절감을주는 버그입니다. 나는 모든 쿠키를 재결합하는 쿠키 정리 미들웨어를 작성하고 하루 이름 뒤에 쉼표를 고려하여 다시 나누어야했다. – aashishkoirala

관련 문제