2013-06-14 3 views
8

내 ASP.NET 웹 API에서 모바일 장치에서 전달 된 Google ID 토큰의 유효성을 검사해야합니다.C#에서 Google ID 토큰 유효성 검사

Google은 일부 샘플 코드 here을 가지고 있지만 JWT NuGet 패키지 인 .Net 4.5 만 사용합니다 (C#/.Net 4.0 사용). 누구든지이 패키지없이이 작업을 수행하거나이 작업을 직접 수행 한 샘플을 알고 있습니까? 패키지를 사용하면이 패키지를 사용하지 않고 수행해야하는 작업을 처리하는 것이 매우 어려워집니다.

+0

찾았습니까? 또한 때로는 Google의 서버가 매우 느리게 반응하기 때문에 C#을 사용하여 오프라인으로 처리하려고합니다. – shashwat

답변

1

ID 토큰의 JWT 인증서 유효성을 검사하는 중입니다. .NET 4.0에서 JWT 유효성 검사를위한 솔루션이있을 때까지 .NET 4.5를 필요로하지 않는이 작업을 수행 할 수있는 라이브러리는 현재 없습니다. 쉬운 솔루션은 없습니다.

그러나 액세스 토큰이있는 경우 oauth2.tokeninfo을 사용하여 유효성 검사를 수행 할 수 있습니다. 토큰 정보를 사용하여 기본 유효성 검사를 수행하려면 다음과 같은 작업을 수행 할 수 있습니다

// Use Tokeninfo to validate the user and the client. 
var tokeninfo_request = new Oauth2Service().Tokeninfo(); 
tokeninfo_request.Access_token = _authState.AccessToken; 
var tokeninfo = tokeninfo_request.Fetch(); 
if (userid == tokeninfo.User_id 
    && tokeninfo.Issued_to == CLIENT_ID) 
{ 
    // Basic validation succeeded 
} 
else 
{ 
    // The credentials did not match. 
} 

구글의 OAuth2 API에서 리턴 된 정보는 그것뿐만 아니라 너무 발급 된 클라이언트 ID로 당신에게 특정 토큰에 대한 자세한 정보를 알려줍니다 그것의 만기 시간.

참고 액세스 토큰을 검색하지 않고 일회성 코드를 교환 한 후이 검사를 수행해야합니다.

+1

실제로 액세스 토큰을 전달하지 않습니다. 단지 ID 토큰입니다. 사용자를 인증하기 만하면 Google API를 호출하지 않아도됩니다. 액세스 토큰을 전달하는 것은 나쁜 습관이라고 생각했습니다. ID 토큰으로이 작업을 수행 할 수있는 방법이 있습니까? 감사합니다 – SeeNoWeevil

+0

.NET 4.5를 사용하지 않고이 작업을 수행하는 방법을 계속 찾고 있습니다. 4.0 이상에서 작동하는 솔루션을 갖는 것이 이상적입니다. 또한 액세스 토큰의 유효성을 검사하려면 일회성 코드를 사용하여 액세스 토큰을 전달하는 대신 액세스 토큰으로 교환하는 것이 좋습니다. – class

관련 문제