1

나는 좋은 날을 인증하는 것 신원 (2)를 사용하여 웹 API를 가지고 있고, 내가 AuthTicket 인스턴스에 직렬화 무엇 /Token 엔드 포인트는 매우 유사 내용으로, 반환 내가 요청을 보낼 때, 그리고Identity 2를 사용하는 ASP.NET 웹 API가 보호 된 리소스에 대한 액세스 권한을 부여하지 않는 이유는 무엇입니까?

AccessToken: "averylongtoken" 
Expires: {2016/12/12 8:19:22 AM} 
ExpiresIn: 1209599 
Issued: {2016/11/28 8:19:22 AM} 
TokenType: "bearer" 
Username: "myusername" 

같은 :

var response = await Client.GetAsync("api/appt/3/true", cancellationToken); 

Client.DefaultRequestHeaders.Authorization 보이는 같은 :

Bearer theSameVeryLongToken

나는 아직도 401 - Not authorized을 얻습니다. 여기서 무엇이 잘못 될 수 있습니까? 웹 API가 어떻게 든 베어러 토큰을받지 못하거나 제대로 해독하지 못했을 수 있습니까? API에서 중단 점을 설정하고 컨트롤러 조치에서 User 특성을 검사하면 해당 특성은 모두 null 또는 기본값이지만 한 속성은 ClaimsIdentity이고 속성도 모두 null이거나 기본값이며 해당 Claims 콜렉션이 비어 있습니다 .

수동으로 모든 소유권 주장을 설정해야합니까? 나는 ApplicationOAuthProvider.GrantResourceOwnerCredentials이 적어도 사용자 이름이나 ID와 같은 클레임을 추가한다고 생각했을 것입니다.

+1

피들러에서 요청을 실행하는 경우 요청 헤더에 토큰이 전달 된 것으로 보입니까? 또한 GrantResourceOwnerCredentials 메소드의 OAuthProvider 클래스에있는 Request Context에서 무엇을 볼 수 있습니까? – Jinish

+0

어떤 이유로 API url로 캡처 된 요청이 표시되지 않습니다. 필터를 호스트'localhost : 51999', 즉 API로 설정하고 클라이언트로부터 게시물 요청을 실행하면 아무 것도 캡처되지 않습니다. 나는'GrantResourceOwnerCredentials'에서 요청 문맥을 보지 못했고'OAuthGrantResourceOwnerCredentialsContext' 만 보았고'/ Token' 끝점에서 호출 된이 메쏘드가 아니기 때문에 사용자를 로그인 할 수 있습니다. 로그인시 나는 인증 토큰과 함께'/ Token'으로부터 좋은 응답을 얻었지만 아직'GrantResourceOwnerCredentials'의 헤더에는 없을 것입니다. – ProfK

답변

0

모든 코드를 다시 검토했지만 요청 헤더에 인증 토큰을 추가 한 행이 사라졌습니다. 요청을 보내기 전에이 헤더를 검사하면 쉽게 확인할 수 있으며 쉽게 수정할 수있었습니다.