2015-01-20 3 views
1

예를 들어 기존 servicestack oauth2 공급자 (예 : Google)를 사용하고 사용자를 위해 만든 하나의 계정으로 어떻게 제한 할 수 있습니까?ServiceStack 및 OAuth2

기본적으로 Google은 Api에 대한 액세스 권한을 계속 유지하면서 Google 계정을 가진 모든 사람이 사용할 수 있도록하고 싶습니다.

답변

1

당신이 원하는 오류 응답을 인증을 취소하고 반환하는 null 응답을 반환, 자신의 사용자 정의 유효성 검사를 추가 할 수 CustomValidationFilter을 사용할 수 있습니다, 예를 들면 :

Plugins.Add(new AuthFeature(() => new CustomUserSession(), 
    new IAuthProvider[] { 
     new GoogleOAuth2Provider(appSettings) { 
      CustomValidationFilter = authCtx => { 
       if (!AllowUser(authCtx.Session, authCtx.AuthTokens)) { 
        var url = authCtx.AuthProvider.GetReferrerUrl(
         authCtx.Service, authCtx.Session 
        ).AddParam("f","GoogleOAuthNotAllowed"); 
        return authCtx.Service.Redirect(url); 
       } 
       return null; //Allow Authentication through 
      } 
     }, 
    })); 
+0

가 AllowUser되는 방법은 나는 곳이 될 것입니다 특정 사용자를 허용하기 위해 내 자신의 데이터베이스에 대해 검사합니까? – user3500462

+0

... 내 뜻은 Google이 성공적으로 인증하면 사용자 액세스를 허용하거나 거부하는 방법입니다. – user3500462

+0

@ user3500462 예 AllowUser는 사용자 세션과 Google OAuth 토큰을 검사하고 확인할 수있는 사용자 지정 메서드입니다. '? f = GoogleOAuthNotAllowed'를 사용하여 리퍼러 페이지로 리디렉션함으로써 사용자를 거부하고 사용자 정의 된 오류 페이지를 제공 할 수 있는지 여부를 결정합니다. – mythz