2016-09-02 3 views
0

oAuth2 protocol 다음 아키텍처를 구현한다고 가정 해보십시오. ASP.NET 웹 API를 서비스 및 외부 ID 공급자로 사용합니다. Google. 이제 클라이언트가 Google로 이동하고 액세스 토큰을 가져 와서 내 REST 서비스에 요청합니다. 이 토큰은 어떻게 확인합니까? 내 웹 API가 Google 토큰을 신뢰하도록하려면 어떻게해야합니까?모바일 앱 ASP.NET Web API와 외부 로그인 공급자간에 oAuth2를 구현하는 방법

ID 제공자 (보안 토큰 서비스)로 Identity Server 3을 사용하는 샘플이 있고 Web Application Server가 Startup.cs 클래스의 ID 서버에 대한 참조를 만드는 OWIN 미들웨어로 실행되고 있습니다. 실제로 Identity Server가 발행 한 모든 토큰이 내 REST 서비스에서 이해할 수 있도록이를 신뢰합니다. Google 로그인 정보를 직접 호출하여 타사 제공 업체로 사용하려면 어떻게해야합니까?

+0

실제로 OAuth가 아닌 openID를 실제로 사용하려는 것 같습니다. 토큰의 유효성을 검사하려면 openID 클레임을 확인해야합니다. – Paulw11

+0

http://bitoftech.net/2014도 참조하십시오./token/asp-net-web-api-2-jwt-owin-authorization-server/ – Paulw11

+0

@ Paulw11 토큰 자체에 클레임이 일반적으로 나타내는 정보가 포함되어 있고 클레임이 그룹화되어 있다고 가정하면 범위로. 그런 다음 oAuth2를 확장 한 것과 같은 OpenId는 새로운 범위 - 신원을 추가합니다. 내 REST 서비스가 실제로 그 사실을 알 필요가 없지만이 사용자가 이미 다른 곳에서 확인되었다는 것을 알아야 할 필요가 있다면 나는 그의 신분이 무엇이든 상관없이 발급 사 등이 무엇인지 알기를 바랍니다. 단지 알 필요가 있습니다. 이 사용자는 익명의 사용자가 아닙니다. – mathinvalidnik

답변

0

과 같이 일할 수있는 당신이 이런 종류의 시나리오를 코딩하는 방법 :

  1. 프런트 엔드가 구글의 로그인에 사용자를 리디렉션 반환 URL을 구글 응용 프로그램을 만들고 액세스 키를 얻을 수 및 설정 페이지에서 앱 액세스 키를 전달하십시오.
  2. Google은 사용자를 인증 한 다음 인증 코드로 애플리케이션을 호출합니다.
  3. 그런 다음이 코드로 Google을 누르고 액세스 토큰을 받게됩니다.
  4. 액세스 토큰을 사용하면 이제 Google의 API를 사용하여 액세스 권한이있는 정보를 검색 할 수 있으며 사용자에 대해 자세히 알 수 있습니다. 이 시점에서 회원님의 회원 시스템과 Google의 OAuth2 시스템간에 링크를 만드는 것이 일반적입니다. 나중에 호출 할 수 있도록 토큰을 저장하고 필요할 때 refresh_token 메커니즘을 사용하여 Google API와 계속 대화 할 수 있습니다.

이 모든 것을 염두에두고 자신 만의 인증 서버는 필요하지 않지만 리소스 서버 (기본적으로 사용자 고유의 REST API)가 필요하며 자신의 미들웨어를 빌드하여 Google 또는 다른 사람을 이해할 수 있습니다 제공 업체의 토큰을 사용하면 Google의 API 등을 사용할 수 있습니다.

Owin을 더 이상 사용하지 않는 경우를 제외하고는 시스템이 여전히 유사한 방식으로 작동 할 수 있도록 자신의 버전의 [Authorize] 태그를 구현합니다.