1

개인 데이터베이스에 대한 사용자 지정 인증을 지원하려면 내 응용 프로그램이 필요하고 여기 Adrian Hall 서적에 대한 조언을 따르십시오. https://adrianhall.github.io/develop-mobile-apps-with-csharp-and-azure/chapter2/custom/ 내 사용자를 인증하는 데 아무런 문제가 없습니다. 문제는 액세스 토큰을 새로 고쳐야 할 때입니다. 사용자 정의 인증을 유지해야하므로 다음과 같은 질문이 있습니다.Azure MobileApp 사용자 지정 인증, 새로 고침 토큰

1) MobileServicesClient.RefreshUserAsync()를 호출해야합니까? 그렇다면 어떤 종류의 끝점을 서버에 구현해야합니까? 매번 다른 토큰을 재발행하여 오래된 것을 무효화합니까? 새로 고침 전화는 언제 만들어야합니까?

2) 만료 기한 갱신 토큰을 사용하는 방법에 대해 읽었지 만 샘플 구현을 찾을 수 없거나 맞춤형 인증 시나리오에서 구현하는 방법에 대한 지침을 통해 누군가 나를 올바르게 지적 할 수 있습니다. 방향? 사전에

많은 감사

+0

당신은이 문제를 해결 도움이 더 필요합니까 적이 있습니까? –

답변

2

나는 MobileServicesClient.RefreshUserAsync()를 호출해야하고, 만약 그렇다면, 엔드 포인트의 종류는 내가 서버에 구현해야합니까? 매번 다른 토큰을 재발행하여 오래된 것을 무효화합니까? 새로 고침 전화는 언제 만들어야합니까? 내가 로그인 한 사용자 당신의 공급자와 액세스 토큰을 새로 고침에 대한 /.auth/refresh 엔드 포인트에 대한 GET 요청을 보낼 것 Microsoft.WindowsAzure.Mobile.dll의 방법 RefreshUserAsync을 확인했다

. 사용자 지정 인증을 사용 중이므로 authenticationToken을 새로 고치는 데이 방법을 사용할 수 없습니다. 누군가가 오른쪽으로 날 지점 수

나는 결코 만료되지 새로 고침 토큰을 사용하는 방법에 대한 읽었습니다,하지만 난 정말 사용자 정의 인증 시나리오에서이를 구현하는 방법에 대한 샘플 구현 또는 지침을 찾을 수 없습니다, 방향? AppServiceLoginHandler에서 CreateToken 방법을 사용하는 경우

, 당신은이 lifetimenull로, 다음 검색 할 것 지정할 수있는 다음과 같은 authenticationToken을 결코 만료되지 :

JwtSecurityToken token = AppServiceLoginHandler.CreateToken(claims, signingKey, audience, issuer,null); 

을 추가, 당신은 당신의 엔드 포인트를 구축을 시도 할 수 있습니다 다음과 같이 이전 유효한 토큰을 기반으로 새 토큰을 생성합니다.

[Route(".auth/login/customRefreshToken")] 
public IHttpActionResult RefreshToken([FromBody] RefreshTokenInput body) 
{ 
    string tokenString = body.AuthenticationToken; 
    try 
    { 
     var jwtSecurityToken = new JwtSecurityToken(tokenString); 
     JwtSecurityToken token = AppServiceLoginHandler.CreateToken(jwtSecurityToken.Claims, signingKey, audience, issuer, TimeSpan.FromDays(30)); 
     return Ok(new LoginResult() 
     { 
      AuthenticationToken = token.RawData 
     }); 
    } 
    catch (Exception e) 
    { 
     return BadRequest("$Error = {e.Message}, StackTrace = {e.StackTrace}"); 
    } 
} 

참고 : 모바일 클라이언트의 경우 MobileServiceClient.InvokeApiAsync을 사용하여 새 토큰을 검색 한 다음 authenticationToken을 구문 분석하고 MobileServiceClient.CurrentUser.MobileServiceAuthenticationToken으로 업데이트 할 수 있습니다.

결과

enter image description here

enter image description here