2016-06-28 3 views
0

UserAuthenticationSecurityCheck class을 확장하는 UserLogin 보안 검사를 정의했습니다. 사용자가 인증되면 나중에 Java 어댑터의 헤더로 사용하기 위해 protected AuthenticatedUser createUser() 함수에서 사용자를 생성 할 때 몇 가지 속성을 설정해야합니다.MobileFirst 8 Java 어댑터에서 활성 사용자 정보를 얻는 방법?

제 문제는 @OAuthSecurity(scope = "UserLogin")에 의해 보안되는 어댑터 리소스에서 활성 사용자 정보를 가져올 수 없다는 것입니다. 내 securitycheck에 다음 함수를 정의하는 시도 :

public AuthenticatedUser getUser() { 

     return authorizationContext.getActiveUser(); 

    } 

을 한 후 어댑터에서이 방법에 전화 :

UserLogin userLogin; 
logger.info("Logging info message..."+userLogin.getUser().getId()); 

을하지만 널 포인터 예외를 반환합니다.

Java 어댑터에서 활성 사용자 정보를 얻으려면 어떻게해야합니까?

답변

2

AdapterSecurityContext 클래스는 어댑터 REST 호출의 보안 컨텍스트를 제공합니다. (당신은 ResourceAdapter 샘플에서 예를 찾을 수 있습니다
AuthenticatedUser currentUser = securityContext.getAuthenticatedUser();

:
@Context AdapterSecurityContext securityContext;

당신은 다음 사용하여 현재 AuthenticatedUser를 얻을 수 있습니다 : 자바 어댑터 클래스 내부

는, 클래스 레벨에서 다음을 추가 거래 enpoint).

+0

또한이 옵션을 시도했지만 AdapterSecurityContext 또는 AdaptersAPI와 같은 어댑터에 포함 된 모든 API가 내 코드 내에서 Null 포인터 예외를 발생 시키는지 확인했습니다. –

0

당신은하고 UserLogin 보안 클래스의 protected AuthenticatedUser createUser() 기능에 속성을 설정할 수 있습니다 :

@Context 
    AdapterSecurityContext securityContext; 

public String getActiveUser(){ 

AuthenticatedUser currentUser = securityContext.getAuthenticatedUser(); 

return "Active user informations are:" +currentUser.getDisplayName()+" "+currentUser.getAuthenticatedBy()+" "+currentUser.getAttributes()+ " "+currentUser.getAuthenticatedAt(); 

} 

클릭 여기에 관련된 자세한 내용은 :

private Map<String, Object> attributes = new HashMap<String, Object>(); 
    @Override 
    protected AuthenticatedUser createUser() { 
     return new AuthenticatedUser(userId, displayName, this.getName(),attributes); 
    } 

당신은 사용 ResourceAdapter class에 활성 사용자 정보를 얻을 수 있습니다 Class AuthenticatedUser.

관련 문제