2014-03-27 10 views
0

단순한 설치보다 더 큰 규모의 안심할 수있는 API 디자인을 고민하고 있습니다.API 디자인, 액세스 토큰 저장

내 설정 자신과 같을 것이다 : 사용자가 요청을 할 권한을 부여받은 후 Rest

문제는, 그들은 액세스 토큰을 얻을 수있다. 다음 요구가 먼저 프록시에 전달 된 다음 인증 서버로 가서 토큰을 확인하고 마지막으로 자원 서버에서 데이터를 가져와야합니까?

사용자가 사용하도록 허용 된 URI에 사용자 권한/역할을 저장해야 할 필요가 있다고 생각하십시오.

토큰과 권한/역할을 나머지 프록시로 옮기면 생각 중입니다. Redis와 같은 메모리 캐시에 저장 되었습니까? 또한 권한/역할이 인증 서버에서 업데이트되면 해당 변경 사항을 프록시에 푸시합니다. 프록시는 매번 인증 서버에 추가 호출을 할 필요가 없으므로 자원 서버에 대한 호출을 1 회만 줄일 수 있습니다. 아니면 이것이 모든 사람들이 어떻게하는지, 두 번의 내부 요청마다 요청하는 것일까 요?

답변

0

모든 요청에서 토큰을 인증하는 것은 좋지 않습니다. 대신 토큰 만료 시간과 동기화하여 만료 시간을 설정할 수있는 Redis 또는 리소스 서버의 맵에 토큰을 저장하십시오.

Redis를 사용하면이 토큰을 userId라고하는 단일 키에 대한 역할과 함께 저장할 수 있으며 토큰의 만료 시간을 설정할 수 있습니다. 이렇게하면 토큰이 만료되면 통화가 자동으로 리디렉션됩니다 자체 인증 서버에 전달합니다.

사용자 역할 및 사용 권한은 Redis에서 다시 선택할 사용자 역할에 대해 확인하도록 사용 권한 목록 유지 관리를 위해 Redis의 별도 세트로 또는 리소스 사용 권한을 저장하는 방법에 따라 리소스 서버에 저장해야합니다 특정 Rest API facilitator는 주석을 통해 리소스를 제한하기 위해 내장 된 API를 가지고 있기 때문에 리소스에 대해). 이 사용 권한 목록은 수정 될 때 업데이트 될 수 있습니다.

+0

하지만 Redis에서는 사용자 ACL (액세스 할 수있는 특정 리소스가 있습니까?)도 저장해야합니다. – John

+0

ACL 부분을 다룰 수있는 답을 업데이트했습니다. –

관련 문제