INiceAuthClient.cs 1.6 KB

1234567891011121314151617181920212223242526272829303132333435363738394041
  1. using SharedKernel.Results;
  2. namespace Application.Abstractions.Kyc;
  3. /// <summary>
  4. /// NICE 통합인증 API 클라이언트. (token / url / result 3개 endpoint 호출 + 복호화)
  5. ///
  6. /// 가이드: .claude/plan/nice-auth-integration.md
  7. /// </summary>
  8. public interface INiceAuthClient
  9. {
  10. /// <summary>
  11. /// access_token 발급 (24시간 유효 — 내부에서 Redis 캐시).
  12. /// 운영자는 직접 호출할 일 거의 없음 — RequestAuthUrl/GetResult 가 내부에서 호출.
  13. /// </summary>
  14. Task<Result<NiceTokenInfo>> GetTokenAsync(CancellationToken ct);
  15. /// <summary>
  16. /// 표준창에 띄울 auth_url 발급. transaction_id 는 10분 유효.
  17. /// 가맹점은 응답의 (AuthUrl, TransactionId, RequestNo, Ticket, Iterators) 를 NiceAuthSession 에 저장.
  18. /// </summary>
  19. /// <param name="sessionToken">
  20. /// 가맹점 NiceAuthSession.SessionToken. NICE return_url path segment 로 embed 되어 callback 매칭에 사용.
  21. /// (Backend 가 NiceAuthOptions.ReturnUrl base 에 자동 append)
  22. /// </param>
  23. Task<Result<NiceUrlInfo>> RequestAuthUrlAsync(string sessionToken, CancellationToken ct);
  24. /// <summary>
  25. /// NICE 표준창 인증 완료 후 result 호출 + 복호화. 성공 시 사용자 정보 반환.
  26. ///
  27. /// ticket / iterators 는 <see cref="RequestAuthUrlAsync"/> 시점 token 발급의 값
  28. /// (NiceAuthSession 에 보관한 값) 을 그대로 전달해야 함.
  29. /// </summary>
  30. Task<Result<NiceUserInfo>> GetResultAsync(
  31. string requestNo,
  32. string transactionId,
  33. string webTransactionId,
  34. string ticket,
  35. int iterators,
  36. CancellationToken ct);
  37. }