2012-06-14 2 views
2

DotNetOpenAuth를 사용하는 WCF SOAP 웹 서비스를 마친 후에는 consumertoken이 OAuthConsumer 테이블에 저장되면 토큰이 만료 된 것으로 간주 되어도 삭제되지 않습니다.데이터베이스에서 만료 된 OAuth 토큰을 제거합니다.

DotNetOpenAuth 프로젝트의 표준 AuthorizedConsumers.aspx 페이지를 편집하여 사용자가 응용 프로그램에 대한 액세스 권한을 수동으로 취소 할 수 있도록했으며, 기본적으로 데이터베이스에서 consumertoken을 삭제했지만 이전 토큰을 제거 할 수 없어야하는지 궁금합니다. 자동으로 예를 들어 사용자가 토큰이 액세스 권한을 부여하는 응용 프로그램에 액세스하려고하면 이미 토큰이 없는지 확인하기위한 검사가 없어야하며 만료되었는지 여부를 확인해야합니다. 새 토큰을 만들 때 이전 토큰이 인 경우이 만료 되었습니까?

이미 수표가 이미 있는지는 알지 못합니다. (나는 찾지 만 찾을 수는 없습니다.) 거기 있습니까? 데이터베이스에서 만료 된 토큰을 제거하는 코드를 추가하는 방법은 무엇입니까? 어디서 코드를 삽입 할 수 있습니까? DataBaseTokenManager 클래스의 StoreNewRequestToken 메소드에서?

감사합니다.

+0

아, 새로운 토큰이 만들어 질 때마다 오래된 토큰을 제거해서는 안된다는 것을 깨달았습니다. 그러나 데이터베이스의 행 수가 너무 많이 증가하지 않도록하고 싶습니다. 그럼에도 불구하고 오래된 토큰은 제거하고 싶습니다. 코드에서이 작업을 수행 할 수있는 방법이 있습니까? 아니면 mysql 데이터베이스의 일종의 이벤트를 통해 수행해야합니까? – Nico

+0

나는 똑같은 것이 궁금합니다. 오래된 토큰을 삭제하지 않은 것에 대해 어디에서 알았습니까? 만료 된 토큰을 삭제해야한다는 점에서 같은 것으로 가정합니다. 적어도 나 한테 의미가있어. –

답변

0

데이터베이스 테이블을 정리하는 것은 DotNetOpenAuth의 범위를 벗어납니다. 원하는대로 구현할 수 있습니다. 예를 들어 만료 된 토큰 행을 제거하고 타이머에 호출하는 데이터베이스 저장 프로 시저가있을 수 있습니다. DotNetOpenAuth는 사용자가 토큰 관리자 인터페이스 구현에서 유효 (만료되지 않은) 토큰 만 반환 할 것으로 예상합니다. 이 토큰의 만기는 DNOA가 처음 저장할 때 주어집니다.

토큰 테이블이 너무 커지지 않도록하려면 두 가지 방법이 있습니다. 수명이 짧은 토큰을 사용하고 주기적으로 테이블을 정리할 수 있습니다. 하지만 DotNetOpenAuth의 OAuth 2 구현에서 가장 좋은 접근 방식이 사용되므로 OAuth 2로 전환 할 수 있다면 이상적입니다. 일단 거기에 있으면 토큰 테이블이 전혀 없다는 것을 알 수 있습니다. 가장 가까운 권한은 모든 개별 사용자 승인 제스처에 대한 행만있는 권한 테이블입니다.이 권한 부여 테이블이 만료 될 때 해당 권한을 제거 할 수 있습니다. 이 권한 부여를 통해 클라이언트는 토큰이 자체 설명하고 서명하기 때문에 원하는만큼 고유 한 토큰을 얻을 수 있고 데이터베이스는 커지지 않습니다. 그리고 DNOA가 모든 것을 관리합니다.

관련 문제