2017-02-24 1 views
2

토큰 권한 부여 (액세스 및 새로 고침 토큰)를 위해 OpenIddict를 사용하는 앱이 있고 전반적으로 훌륭하게 작동합니다. 문제는 내 유스 케이스에 동일한 인증 서버를 사용하는 여러 앱 유형 (웹 및 모바일)이 있다는 것입니다. 서로 다른 토큰 끝점을 사용하는 다른 유형의 다른 만료 시간을 갖고 싶지만 SetAccessTokenLifetime 및 SetRefreshTokenLifetime으로 설정된 값을 재정의하는 방법을 찾아 낼 수 없습니다. 이것을 할 수있는 방법이 있습니까?OpenIddict에서 다른 티켓 만료 길이를 사용하는 방법이 있습니까?

목표는 웹 앱에 대한 액세스 토큰 길이를 길게하고 사용자가 만료되면 로그인으로 리디렉션하도록하는 것입니다 (합리적으로 긴 만료 시간 (예 : 시간)). 모바일 측에서는 새로 고침 토큰을 사용하여 사용자를 로그인 상태로 유지하려고합니다. 모범 사례는 모바일에서 긴 새로 고침 토큰 만료와 함께 매우 짧은 토큰 만료 (예 : 분)를 가져야 함을 나타냅니다.

감사합니다, 제이슨

답변

3
내가 (아마 다른 토큰 엔드 포인트를 사용하여) 다른 유형의 다른 만료 시간을 가지고 싶습니다하지만 SetAccessTokenLifetime 설정 한 값을 대체 할 수있는 방법을 알아낼 수 없습니다

및 SetRefreshTokenLifetime. 이것을 할 수있는 방법이 있습니까?

당신은 전용 AuthenticationTicket 확장을 사용하여 권한 부여 엔드 포인트 동작에서 직접 글로벌 토큰 만료 값을 대체 할 수

// Create a new authentication ticket holding the user identity. 
var ticket = new AuthenticationTicket(principal, properties, 
    OpenIdConnectServerDefaults.AuthenticationScheme); 

ticket.SetAccessTokenLifetime(TimeSpan.FromMinutes(30)); 
ticket.SetAuthorizationCodeLifetime(TimeSpan.FromMinutes(1)); 
ticket.SetIdentityTokenLifetime(TimeSpan.FromMinutes(30)); 
ticket.SetRefreshTokenLifetime(TimeSpan.FromDays(2)); 
+0

완벽한, 감사 핀 포인트! – Jason

+0

감사합니다. @ 핀 포인트 – damir