2015-01-17 3 views
0

현재 여러 클라이언트에서 액세스 할 수있는 멀티 테넌트 webApi가 포함 된 솔루션에서 작업 중입니다. 일부는 작성 중이며 일부는 작성 중입니다. ApiKey & Secret (일부 리소스가 충분 함)과 사용자 이름 & (소유자 리소스 용)을 통해 api에 액세스 할 수 있습니다.브라우저 및 웹 서버 API 인증 토큰

현재 내가 만든 클라이언트 (.Net MVC 웹 앱)에는 자체 멤버십 시스템이 있으므로 클라이언트의 사용자가 클라이언트 시스템에 로그인하고 클라이언트 시스템이 로그인 정보를 API에 전달합니다. 인증 토큰을 검색합니다.

클라이언트 회원 시스템은 실제로 불필요한 추상화입니다. 내가 정말로하고 싶은 일은 사용자가 직접 api에 로그인하고 api가 브라우저뿐만 아니라 .Net MVC 클라이언트 응용 프로그램에서 사용할 수있는 인증 토큰을 다시 전달하는 것입니다.

제 질문은이 문제를 해결하는 가장 좋은 방법입니다. 내 마음에 나는 2 가지 해결책으로 어려움을 겪고있는 것 같다.

1) 브라우저에 로그인 (예 : ajax/AngularJS) 솔루션을 사용하여 API를 호출하여 토큰을 가져온 다음 토큰을 MVC 클라이언트에 전달합니다 (세션 변수 일 수 있음). .Net MVC 클라이언트에서 오는 API에 대한 이후의 모든 호출은 토큰을 전달할 수 있습니다. 이것은 나에게 잘못된 것처럼 보인다. 나는 이것이 가능하다는 것을 확신하지 못한다.

2) 브라우저 기반 로그인이 API를 호출하고 토큰을 검색 할 수 있도록 OAuth 플로우 중 하나를 사용하면 OAuth 플로우가 해당 사용자의 토큰을 저장하는 MVC 클라이언트로 리디렉션됩니다 (다시 세션 변하기 쉬운).

Api는 Owin 로컬 계정을 사용하여 VS2013 WebApi 템플릿을 사용하여 생성되었으며 ValidateClientCredentials 및 ValidateResourceOwnerCredentials 플로우를 통해 토큰을 생성하지만이 시나리오에서는 다른 OAuth 플로우 중 하나를 사용해야한다고 생각합니다.

다른 솔루션은 .Net MVC 클라이언트 코드를 무시하고 완전히 녹아웃 또는 AngluarJS를 사용하는 브라우저 기반 솔루션을 만드는 것이지만 꽤 복잡한 시스템이므로이 순간을 수행 할 시간이 없다는 것을 알고 있습니다. 그래서 나는 내 .Net MVC 클라이언트 및 브라우저에서 아약스 호출에서 사용할 수있는 API 토큰을 검색 할 수 있도록 솔루션을 찾고 있어요.

모든 아이디어, 조언을 많이 주시면 감사하겠습니다.

미리 감사드립니다. 저스틴

답변

0

Azure AD를 자격 증명 저장소 및 인증 시스템으로 사용하는 경우 인증, AJAX 통화 및 세션 관리 문제를 자동으로 처리하는 바로 사용할 수있는 JS 라이브러리를 활용할 수 있습니다 (http://www.cloudidentity.com/blog/2014/10/28/adal-javascript-and-angularjs-deep-dive/ 참조). Azure AD에 의존 할 수 없다면 위에 언급 된 라이브러리 및 샘플 코드는 자신의 시스템 구축을위한 참고 자료로 여전히 가치가있을 수 있습니다. 단, 사용하려는 인증 시스템이 유사한 기능을 제공해야합니다. HTH V.

+0

감사합니다. @vibronet, 나는 그것을 조사하고 결과를 게시 할 것입니다. –