2016-10-06 7 views
1

Owin 컨텍스트에서 "security.Authenticate"키의 값을 입력하는 코드를 찾고 싶습니다.Microsoft Katana에서 Owin 컨텍스트에 특정 키 값 쌍이 어디에 배치되었는지 어떻게 알 수 있습니까?

어떻게하면됩니까?

Microsoft Katana와 AspNet ID를 함께 사용하고 있습니다. 나는 OAuth는 2.0 사양을 읽었습니다하지만 내 목표는 마이크로 소프트가 자신의 코드에서 구현하는 방법을 찾는 것입니다

배경입니다.

따라서 Visual Studio 2015에서 개인 계정 개인 계정인증을 사용하여 ASP.NET MVC 프로젝트 템플릿을 열면 많은 보일러 플레이트 코드가 생깁니다.

지난 몇 년 동안, 나는 그 대부분을 이해하는 법을 배웠습니다. 그러나 때때로, Reflector와 IL Spy를 사용하여 잊어 버리고 물건을 쫓아 낼 것입니다.

지금 보일러 플레이트와 함께 제공되는 ChallengeResult 클래스가 OAuth 공급자로 리디렉션되는 방식을 전혀 이해하지 못했을 때 이해하고 싶습니다. ExecuteResult 메서드가있는 것 같습니다.

내 연구에 따르면 OwinContext에서 func을 가져 와서 실행합니다. OwinContextfunc과 함께 저장된 키는 "security.Authenticate"입니다.

// Microsoft.Owin.Security.AuthenticationManager 
internal Func<string[], 
     Action<IIdentity, 
     IDictionary<string, string>, 
     IDictionary<string, object>, object>, 
     object, 
     Task> AuthenticateDelegate 
{ 
    get 
    { 
     return this._context 
     .Get<Func<string[], 
     Action<IIdentity, IDictionary<string, string>, IDictionary<string, object>, object>, 
     object, Task>>("security.Authenticate"); 
    } 
} 
+0

좋은 질문과 나는 그것을 빨리 발견하지 못했습니다. 이 특정 항목을 조사하기 위해 어떤 방향으로 이끌어 낼 수 있는지 물어볼 수 있습니까? – trailmax

+0

@trailmax 그냥 호기심. 나는 추상화를 찢어 내고 안으로 들여다보고 싶어한다. 나는 대개 내 자신의 OAuth 코드를 작성하기 때문에 대개 간단합니다. 그러나 과거의 프로젝트에서 필자는 Microsoft의 코드를 사용했으며 매번 어떤 일이 일어나고 있는지를 알기까지 추적 할 것입니다. 것은 다음 번에, 나는 대부분의 비트를 잊어 버릴 것이다. Facebook과 통합하기 때문에 다시하고 있습니다. 통합은 도전이 아닙니다. 사실, 그것은 한 조각의 케이크입니다. 내가 무슨 일이 일어나고 있는지 알지 못한다면 나는 블랙 박스가 싫다. –

+0

그것은 큰 열망입니다! 내가 그것을 찾을 수 있는지 보자. – trailmax

답변

1

이 값은 AuthenticationHandler 사용된다 OwinRequestExtensions 설정된다. 긴 통화 후에는 CookieAuthenticationMiddleware 및 기타 인증 미들웨어로 끝납니다.

+0

감사합니다. 나는 거의 근접했다. ID 함수는 , IDictionary , object>, object, Task >> (" security.Authenticate "); Debug.Print (func.GetType(). ToString()); Debug.Print (func.Target.ToString());'ChallengeResult.Execute' 안에 있습니다. –

+0

OAuth에서'scope '에 관한 질문이 있습니다.하지만 그것에 대해 새로운 질문을 할 것입니다. 이 질문의 요약은 다음과 같습니다. VS 2015 및 Facebook 인증과 함께 제공되는 새로운 상용구 코드가 사용자의 전자 메일 주소를받지 못한다는 것을 알았습니다. 사용자의 전체 이름 만 가져옵니다. 또한 사용자에게 확인 대화 상자를 요청하지 않습니다. "이 앱은이 사실을 알고 싶어합니다."Katana가 사용자의 전자 메일 주소를 가져오고 Facebook에 로그인 확인 대화 상자를 표시 할 수있는 범위를 추가 할 수있는 곳은 어디입니까? –

+0

예,이 값은 둘 이상의 상수로 정의되었습니다. 상수. – trailmax