2013-07-29 5 views
2

다른 플랫폼 (WEB, WPF, 모바일)에서 액세스 할 수있는 API 응용 프로그램을 만들어야합니다. API는 Azure에서 호스팅되며 클라이언트는 다른 웹 사이트 및 데스크톱/모바일 응용 프로그램이됩니다. API가 사용자 별 정보를 반환하기 위해 사용자 이름을 알아야합니다.다른 플랫폼의 WEB API 인증

지금 인증에 몇 가지 문제가 있습니다. 나는 this thread how to do forms authentication to API에서 아이디어를 사용했으나 거기에 문제가 있습니다. 이전 요청에서 생성 한 쿠키가 다음 요청에 저장되지 않았기 때문에 API에 대한 각 요청을 인증해야합니다.

거기에 몇 가지 맞춤 솔루션을 만들려고합니다. 사용자 이름/비밀번호로 전송 된 API에 대한 로그인 요청에서 클라이언트에 저장하는 토큰을 반환하고 각 요청과 함께 전달할 때. 이 경우 AuthorizeAttribute를 재정의하고 토큰의 유효성을 검사 할 수 있습니다. 하지만 저는 맞춤 솔루션을 만들어야한다고 생각하지 않습니다. Microsoft가 저에게 해준 것을 사용하는 방법을 찾는 것을 선호합니다.

다른 플랫폼에서 WEB API를 인증하는 가장 좋은 방법은 무엇입니까? 토큰을 반환 할 경우, 그것을 생성하고, 인코딩하고, 만료시키는 가장 좋은 방법은 무엇입니까?

답변

0

현재 알 수없는대로 즉시 사용할 수있는 것이 있습니다. 오윈 (OWIN)과 함께 일이 일어나고 있습니다. Katana 소스 코드 (Microsoft.Owin.Security)를 살펴볼 수 있습니다. JSON 웹 토큰의 경우 Microsoft는 JSON 웹 토큰 handler을 보유하고 있습니다. 더 많은 정보 here. JSON Web Token Handler는 JWT를 생성하고 유효성을 검사 할 수 있습니다. 동일한 라이브러리를 사용하여 토큰 발급자와 웹 API에서 각각 JWT를 발행하고 유효성을 검사 할 수 있습니다. 이러한 인프라를 모두 만드는 것은 쉽지 않습니다. Thinktecture ID 서버와 ID 모델은 이러한 작업을보다 쉽게 ​​수행 할 수 있습니다. 둘 다 오픈 소스이며 github에서 소스 코드를 살펴볼 수 있습니다. thisthis을 확인하십시오. 또 다른 좋은 리소스는 Dominick의 blog입니다.

+0

Badri의 코멘트에 덧붙여, 위에서 언급 한 JWT 핸들러는 제가 사용했던 핸들러입니다. 이 문서는 웹 API를 구성하는 예제입니다. http://msdn.microsoft.com/en-us/library/windowsazure/dn169448.aspx#BKMK_Writing1 –