2011-03-23 2 views
1

현재 Google App Engine/Java에서 RESTlet을 사용하는 소규모 프로젝트를 진행 중입니다.RESTlet + GAE/J의 맞춤 로그인 및 가입?

검색 중 ... 내 질문에 대한 정확한 또는 이해할 수있는 해결책을 찾을 수 없습니다.

제 질문은 Google의 UserService 또는 Spring Security를 ​​사용하지 않고 SignUp 모듈 & SignUp을 구현하는 방법은 무엇입니까?

실제 샘플 코드가 있습니까?

나는 SignUp 부분이 단순한 JDO 삽입 & 모듈을 선택한다는 것을 의미합니다. 내가 해냈다 고 말하자.

각 사용자의 요청 세션 및 인증을 어떻게 처리해야합니까 ??

모든 요청에 ​​대해 HTTPS를 사용하려고합니다.

어떤 제안이나 도움이 정말 감사하겠습니다!

미리 감사드립니다. 당신은 다시 사용하여 사회 계정에 관심이 있다면

+0

더 많은 설명을 추가하려면 클라이언트 측 및 서버 측에 iPhone 또는 Android 앱이 있어야합니다. 클라이언트와 함께 작동하려면 Google App Engine을 사용하고 있습니다. – jlc488

+0

그리고이 고객이 facebook, yahoo, twitter .. 등의 자체 소셜 계정 정보로 가입하고 가입하기를 원합니다. – jlc488

+0

이 사이트에 로그인 한 후이 클라이언트가 GAE에서 RESTlet 리소스에 액세스되기를 바랍니다. 감사. – jlc488

답변

1

Restlet에서는 클라이언트와 서버 모두에서 보안을 지원합니다. 클라이언트 측에서는 ChallengeResponse 엔티티를 사용하여 보안 힌트를 지정할 수 있습니다. 이 기능은 열려 있으며 원하는 인증 유형을 지정할 수 있습니다. 다음 코드에서는 사용자 이름/비밀번호를 기반으로 HTTP 기본 인증을 사용합니다.

ClientResource cr = new ClientResource(uri); 
ChallengeScheme scheme = ChallengeScheme.HTTP_BASIC; 
ChallengeResponse authentication = new ChallengeResponse(
          scheme, "username", "password"); 
cr.setChallengeResponse(authentication); 

Restlet은 해당 요청에 필요한 헤더를 자동으로 작성합니다. Restlet은 확장 기능을 통해 다양한 인증 유형을 지원합니다. OAuth v2 (http://wiki.restlet.org/developers/172-restlet/257-restlet/310-restlet.html 참조)를 지원하기 위해 현재 일부 작업이 완료되었음을 알고 있습니다.

서버 측에서는 아래 설명 된대로 ChallengeAuthenticator 엔터티를 사용하여 라우팅 수준에서 액세스를 보호해야합니다. 이것은 당신으로 Restlet 응용 프로그램 내에서 수행 할 수 있습니다

public Restlet createInboundRoot() { 
    Router router = new Router(getContext()); 

    ChallengeAuthenticator guard = new ChallengeAuthenticator(getContext(), 
             ChallengeScheme.HTTP_BASIC, "realm"); 
    guard.setVerifier(verifier); 
    guard.setEnroler(enroler); 

    guard.setNext(router); 
    return guard; 
} 

, 이러한 지원은 제네릭과 경비를 지정할 필요는 두 개의 인터페이스를 기반으로 클라이언트 측에 대한처럼 :

  • 인증 장치 하나 인증이 성공하면
  • 인증 된 사용자에 대한

을 역할을 채우기 위해 enroler 한 당신은 같은 보안 기술이 있어야 알 수 확인 양면에서 사용하십시오 ...

사용자의 인증 세션을 관리하려면 쿠키를 사용하여 직접 구현해야합니다.

인증이 서버 측에서 성공하면 데이터베이스에서 사용자를 확인할 수있는 보안 토큰이 포함 된 쿠키를 반환 할 수 있습니다 (예 :). 아래 같은 일부 코드는 그것을 구현할 수 있습니다

CookieSetting cookie = new CookieSetting(0, 
       SECURITY_COOKIE_NAME, securityToken); 
Series<CookieSetting> cookieSettings = response.getCookieSettings(); 
cookieSettings.clear(); 
cookieSettings.add(cookie); 

받은 보안 데이터에 대한 테스트를 추가하고 보안 쿠키를받을 때이 코드를 추가하는 예를 들어으로 Restlet의 SecretVerifier 클래스를 확장 할 수 있습니다.

ClientResource clientResource = (...) 
(...) 
Cookie securityCookie = new Cookie(0, 
      SECURITY_COOKIE_NAME, securityToken); 
clientResource.getRequest().getCookies().clear(); 
clientResource.getRequest().getCookies().add(securityCookie); 

은 당신을 도울 것입니다 희망 : 아래에 설명 된대로 클라이언트 측에

, 당신은 항상 다음과 같은 보안 쿠키를 보낼 다시 다음 인증을 위해 처음 힌트를 추가 할 필요! Thierry

0

, 당신은 당신이 할 수있는 클라이언트를 인증하기 위해 각각 facebook oauth 같은

통합 및/또는 app engine authentication via OpenID

이 두 가지 방법이 API를 정의 사용할 필요가 UserService를 사용하거나 쿠키를 통해 자신의 상태를 관리하십시오.