2014-02-15 6 views
0

내가 뭔가를 이해하지 못하면 나를 정정하십시오. VS 템플릿에서 생성 된 새로운 웹 API 응용 프로그램으로 작업하고 있습니다.웹 API [인증] 사용자 로그인없이 속성 또는 비밀번호로 요청 토큰?

  • 사용자는 웹 API 앱의 로그인 페이지에 바로 등록합니다.
  • 사용자는 웹 API 앱 외부에서 (api/Accounts URL을 알고있는 모든 기기에서) 등록 할 수 있지만 민감한 정보는 일반 텍스트로 전달해야합니다.
  • 샘플 ValuesController[Authorize]입니다.
  • 사용자가 로그인하지 않은 경우 브라우저에서/api/값을 입력하면 401이 표시됩니다.
  • /api/Fiddler에서 값을 액세스하면 사용자가 로그인해도 401이 표시됩니다. 웹 응용 프로그램 외부에서 액세스 토큰을 사용할 수없는 Authorize : Bearer 헤더가 필요합니다.
  • 응용 프로그램 외부에서 토큰을 요청하는 데 사용할 수있는 토큰 끝점이 있지만 기본 제공 토큰 끝점을 사용하려면 사용자의 사용자 이름과 암호를 일반 텍스트로 보내야합니다.

모든 작업은 외부 신뢰할 수있는 클라이언트 응용 프로그램 (사용자 정보를 저장하는 동일한 데이터베이스에 대한 액세스 권한이 있어야 함)에서 수행해야합니다. 클라이언트 응용 프로그램에서 헤더에 해당 액세스 토큰을 갖는 요청을 만들 수 있도록 액세스 토큰을 만드는 방법은 무엇입니까?

클라이언트에서 허용되는 액세스 토큰을 생성 할 수 있다고 가정합니다. 사용자가 기술적으로 로그인하지 않았기 때문에 [Authorize] 속성이 여전히 액세스를 차단합니까? 또는 [Authorize]은 실제로 401이 발생하지 않으면 사용자를 로그인합니까?

답변

1

현재 IIdentityIsAuthenticated 속성이 false 일 때 AuthorizeAttribute은 액세스를 차단합니다. 이것은 액세스 토큰과 완전히 분리되어 있습니다.

0

귀하의 조치는 괜찮습니다. 하지만 쿠키 인증과 토큰 인증으로 마지막 부분에 대한 이해가 섞여 있다고 생각합니다.

사용자가 기술적으로 로그인하지 않았으므로 [Authorize] 속성이 여전히 액세스를 차단합니까? 또는 [Authorize]가 실제로 사용자를 로그인하는 경우 401이 발생하지 않습니까?

쿠키 인증을 사용하면 기술적으로 로그인해야하며 유효한 세션이 서버에 있어야합니다.

그러나 이것은 토큰 인증의 경우에는 해당되지 않습니다. 유효한 무기명 토큰을 가지고있는 한 모든 기기에서 api에 액세스 할 수 있습니다.