2014-04-08 4 views
0

OAuth를 인증에 사용하고 있는데 사용자의 보안 액세스 토큰을 생성하는 가장 좋은 방법은 무엇입니까? 액세스 토큰을 데이터베이스에 저장하거나 요청할 때마다 새 토큰을 생성해야합니까?보안 액세스 토큰 생성

무기명 토큰을 사용하고 있습니다.

답변

0

토큰 액세스는 영구 저장소에 저장하지 않아도됩니다 (다른 한편으로는 토큰 새로 고침이 일반적으로 수행됩니다). Microsoft.Asp.Identity 라이브러리를 사용할 때 asp.net 웹 API에서 구현되는 일반적인 시나리오는 FormsTemplate이 FormsAuthentication을 사용할 때 쿠키가 클라이언트에 성공적으로 다시 전송되는 것과 같은 방식으로 요청시 생성된다는 것입니다.

액세스 토큰은 Asp.Net 컴퓨터 키와 Base64-ed를 사용하여 암호화 된 일련의 ClaimsPrincipal입니다.

더 많은 이하, 때마다 클라이언트는 서버가 다음 시스템 키를 사용하여 해독 base64로 에드 문자열에서 Byte[]을받을 만해야하는 "권한 부여"헤더 존재 ( Authorize: Bearer asdfdsgwe.......YOUR_ACCESS_TOKEN........2334sdfs=== 같은)와 API에 요청을 마지막으로 IPrincipal에 직렬화 복원합니다. 이 프로세스는 WebAPI의 수명주기 초기에 수행되며 System.Threading.Thread.CurrentPrincipal이 채워집니다.

그런데 access_token에는 데이터베이스로 돌아갈 필요없이 현재 사용자를 식별하는 데 필요한 모든 정보가 들어 있습니다.

UPDATE 당신은 당신을 위해 access_tokens을 만들 Microsoft.Asp.Identity를 사용에 관심이없는 경우. 그런 다음 System.IdentityModel.Tokens.Jwt Nuget Package을 사용하여 고유 한 구현을 롤백하는 것이 좋습니다. 이 작업은 쉬운 일이 아니라는 점을 명심하십시오. 또한 thinktecture로 우수한 opensource 레퍼런스 구현을 확인하십시오. Thinktecture Identity Server v3

희망이 있습니다.