스프링 oauth 프레임 워크를 사용하면서 발견 한 자원 서버는 승인 서버에 대한 check_token?token=T_O_K_E_N
요청을 작성하는 자원 서버이며 권한 서버는 다음과 같은 권한으로 CheckTokenEndPoint 맵을 반환합니다.스프링 oauth : 승인 서버 대신 자원 서버가 승인하는 이유
{
"exp": 1511471427,
"user_name": "idvelu",
"authorities": [
"FUNCTION_GET_USERS",
"FUNCTION_AUTHORITY_1",
"FUNCTION_AUTHORITY_2",
"FUNCTION_AUTHORITY_3",
"FUNCTION_AUTHORITY_4",
"FUNCTION_AUTHORITY_5",
"FUNCTION_AUTHORITY_6",
"FUNCTION_AUTHORITY_7",
],
"client_id": "c1",
"scope": [
"read",
"write"
]
}
oauth 서비스로 이것을 시각화하면 리소스 서비스가 두 개의 다른 시스템/jvm에서 실행됩니다.
이제 자원 서버는 구성된 유효 권한에 대한 요청을 ResourceServerConfiguration::configure(HttpSecurity)
에 권한 부여 서버의 권한으로 승인해야한다고 생각합니다.
@Override
public void configure(HttpSecurity http) throws Exception {
http.anonymous().disable().requestMatchers().antMatchers("/**").and().authorizeRequests()
.antMatchers(HttpMethod.GET, "/myproject/users").hasAnyAuthority("FUNCTION_GET_USERS")
.antMatchers(HttpMethod.POST, "/myproject/users").hasAnyAuthority("FUNCTION_POST_NEW_USER")
.anyRequest().denyAll()
.and().exceptionHandling().accessDeniedHandler(new OAuth2AccessDeniedHandler());
}
이 경우 권한 서버는 수백 개의 모든 사용자 권한을 자원 서버로 리턴 할 수 있습니다. 대신 인증 서버 자체가 인증에 필요한 몇 가지 권한을 리소스 서버의 쿼리 매개 변수 check_token?token=T_O_K_E_N&authorities=FUNCTION_GET_USERS,FUNCTION_AUTHORITY_2,..
으로 가져 와서 DB를 통해 사용자 기능에 대해 유효성을 검사 할 수있는 이유는 무엇입니까?
그리고 마지막으로 내 문제는; 나는 java, node.js, NGINX와 같은 다른 서비스를 가지고있다. 이들 모두는 하나의 Spring Authorization 서버에 대한 인증과 권한 부여를 검증해야한다. 위에서 언급 한 문제로 인해 모든 서비스가 인증 (리소스 서버) 부분을 구현해야합니다. 사용자의 모든 권한을 API 권한 당국과 비교하는 것을 의미합니다.
자바 측에서는 스프링 리소스 서버 구현과 비교해도 괜찮습니다. 그러나 다른 모든 Java가 아닌 (자원) 서비스에는 authorization/resourceServer 구현이 필요합니다. 대신 내 스프링 인증 서버가 권한을 승인하고 유효성 검사를하면 내 문제는 인증/비교 구현의 단일 지점으로 해결됩니다. check_token의 일부로 전달하면됩니다.
권한을 수락하는 것과 함께이 새로운 check_token 끝점을 구현하는 방법은 무엇입니까?
질문 조금 명확하지 않습니다. 정확한 질문에 대해 더 자세히 설명해 주시겠습니까? –
@AtaurRahmanMunna 리소스 서버에서 권한 부여를 요청하는 이유는 무엇입니까? 여기서 권한 부여 서버는 권한 부여 대신 단순히 권한 목록 만 리턴하고 있습니까? –
** 보호 ** 리소스에 액세스하려고했으며 리소스를 제공하기 전에 리소스 서버가 올바른 토큰을 가지고 있는지 확인해야합니다. 여기서 권한 부여 서버는 토큰을 제공하기 전에 사용자 이름과 암호 만 인증합니다. –