0

Google 서비스의 ID는 데이터베이스에 저장된 토큰을 기반으로합니다. 이것은 사용자 이름과 암호로 로그인하여 클라이언트에 의해 획득됩니다.토큰 기반 인증 서버 요청/응답 설계

리소스가 요청 될 때마다 토큰의 유효성을 검사하고 사용자가 해당 리소스에 액세스 할 수있는 권한이 있는지 확인합니다.

우리의 서비스는 별도로 배포되며 HTTP를 통해 인증 서버에 연결할 수 있습니다.

요청을 승인하는 가장 좋은 방법/일반적인 방법은 무엇입니까? 요청 권한 및 역할

내가 역할과 토큰을 전달 생각하고, 인증 서버 토큰 검증 요청에 사용자의 허가를 요청한와 토큰을 보내기

.

{ 
token: 'xyz', 
role: 'ROLE_ADMIN', 
permission: 'SAVE_USER' 
} 

으로 응답하고 성공한 경우 200, 유효하지 않은 토큰의 경우 401, 권한 사용 권한이없는 경우 403으로 응답합니다. 마음에 또 다른 방법은 인증 서버에 토큰 검증 요청 토큰 단지 토큰을 보내는

는 인증 요청 만 토큰을 보내기.
{ 
token: 'xyz' 
} 

모든 권한과 역할을 사용자에게 응답

가 있습니다
{ 
roles: ['ROLE_ADMIN', 'ROLE_USER'], 
permissions: ['SAVE_USER', 'DELETE_USER', 'SHOW_USER'] 
} 

더 바람직하다이 무엇입니까? 내가 고려할 수있는 다른/패턴 접근법이 있습니까?

+0

Spring MVC를 사용한다면 Spring OAuth를 사용하는 것이 더 좋다. 실제 정보가 데이터베이스에 저장되는 동안 임의의 uuid (토큰) 만 보내어 토큰 기반 인증을 처리합니다. 따라서 토큰을 사용하여 리소스에 액세스하려고 할 때마다 spring은 해당 토큰에 대한 역할/사용 권한을 확인하고 그에 따라 사용자를 확인합니다. – Afridi

+0

@Afridi 현재 OAuth를 사용하지 않습니다. 비 OAuth 인증/권한 부여를 위해 Spring OAuth를 사용하는 것이 바람직합니까? – froi

답변

0

"서비스"에 대해 말하면서 서비스가 요청하기 전에 무엇을 할 수 있는지 알고 싶어 할 가능성이 가장 높습니다.

예를 들어 요청이 도착하기 전에 사용자가 클릭 할 수있는 버튼을 강조 표시 할 수 있습니다.

그래서 두 번째 방법이 좋을 것 같습니다. 요청이 서버에 전달되는 동안 일종의 첫 번째 접근 방식이 실행될 것입니다 (예 : 사용자가 무언가를 제거하려고하는데 충분한 액세스 권한이 없으므로 403을 얻습니다.

보안에 대해 말하면, 설명한 두 가지 방법으로 충분한 검사가 있습니다. 첫 번째는 사용자가 어떤 행동을 요구할 때 실행되기 전에 점검을 받았기 때문에해야 할 일입니다.

+0

확인하려면 서비스 요청을 승인하는 일반적인 방법입니까? – froi

+0

@ 프 로이 어느 것을 말하고 있습니까? 매 요청마다 토큰을 보내시겠습니까? 나는 그렇다고 믿는다. 많은 유명한 서비스가 그것을 사용합니다. – MTP1376