2017-04-06 5 views
0

계속 실행 모드로 실행되는 Azure WebJob이 있습니다. 메인 WebJob의 프로세스는 계속 모드에서 실행되기 때문에 오랜 기간, 잠재적으로 몇 개월 동안 실행될 수 있습니다.WebJobs의 장기 실행 프로세스에서 적절한 ADAL의 인증 컨텍스트 수명주기 관리

저는 프로세스에서 AuthenticationContext를 인스턴스화하는 올바른 방법을 확인하고자합니다.

  • 옵션 1 : main() 메소드에 AuthenticationContext의 인스턴스를 인스턴스화하고 WebJob 과정의 기간 동안 사용 - 몇 달을 수 있습니다

  • 옵션 2 : OAUTH에 대한 필요시 베어러 토큰은 AuthenticationContext의 인스턴스를 인스턴스화하고 토큰을 가져옵니다.

나는 옵션 1을 사용하려고 생각합니다. 그러나 여기에서 나의 접근 방식을 확인하고 싶습니다. 이 질문은 Windows 서비스 시나리오에도 적용될 수 있습니다.

답변

0

다른 라이브러리와 함께 Active Directory 인증 라이브러리를 개발하는 데 차이가 없습니다.

두 가지 옵션 모두 작동해야하며 요구 사항에 따라 다릅니다. 예를 들어 option1을 사용하면 객체는 항상 메모리에 저장됩니다. 그리고 option2를 사용하면 필요할 때마다 인스턴스가 초기화되므로 option1보다 약간 느려질 수 있습니다. 정상적인 환경에서는이 두 옵션보다 약간의 차이가 있습니다.

어떤 것을 받아 들일 수 있는지 스스로 테스트 해보십시오.

+0

Option2는 AuthenticationContext를 인스턴스화 할 때마다 REST 호출을 통해 Berear 토큰을 가져 오는 데 드는 막대한 비용을 부과합니다. 옵션 1을 사용하면 AuthenticationContext는 Berear 토큰을 캐시하고 새로 고침 토큰 시나리오를 매우 효율적으로 처리합니다. 나 맞아? –

+0

예, option2는 매번 'AuthenticationContext'의 인스턴스가 만들어지기 때문에 매번 HTTP 요청을 통해 액세스 토큰을 가져옵니다. –

+0

그리고 내 이해에 따라 ** 클라이언트 자격 증명 흐름 **을 사용하는 경우 라이브러리는이 시나리오에서 새로 고침 토큰이 없기 때문에 액세스 토큰을 새로 고치는 데 도움이되지 않습니다. 이 시나리오에서는 액세스 토큰을 캐싱하지만 시나리오에서'AcquireTokenAsync (문자열 리소스, ClientCredential clientCredential) '호출 후에 액세스 토큰을 얻을 수 있습니다. 그런 다음이 액세스 토큰을 직접 사용할 수 있습니다. 그리고 액세스 토큰이 만료 된 후에는 해당 메소드를 호출하여 새 액세스 토큰을 검색 할 수 있습니다. –