2017-09-04 7 views
0

우리 응용 프로그램을 ADFS 및 웹 API를 사용하여 사용자 컨텍스트에서 실행되는 일반 .net 데스크톱 서비스와 통합하려고합니다. 사용자는 도메인 사용자이며 일반 AD 환경입니다. 웹 사이트의 MVC 측면이 브라우저와 잘 작동합니다.로그온 한 사용자에 대해 ADFS 싱글 사인온이 작동하지 않습니다.

내가 ADAL3 (VS2017) 오전는 2016 년 윈도우 서버, 나는이 링크를 성공적으로 토큰을 얻을 내 웹 API를 호출하는 UserCredentialPassword를 사용할 수 [ADFS SSO CloudIdentity] 오전 언급, 난 그냥 단계를 수행하고 비동기 물건을 변경했습니다.

new UserCredential(), 내가 널 포인터 예외를 받고 오전 ADAL3에 내가

를 얻을 ADAL 2, 나를 위해 전혀 작동하지 않는 현재의 스레드에서 토큰을 얻기 위해 전화를 표시 할 위치 그러나 자격 증명 비트에 로그온 사용

MSIS7065 : 들어오는 요청을 처리하기 위해 경로/adfs/oauth2/token에 등록 된 프로토콜 처리기가 없습니다.

나는 비슷한 쿼리를 보았지만 나의 이해를 바탕으로 OP가 브라우저 기반 동작으로 되돌아 가고 있습니다.

브라우저 기반 인증 (Promptbehaviour.never 포함) 기반 동작은 사용자 사이트에서 많은 설정 문제가 발생했기 때문에 바람직하지 않습니다. 관련 설정을 사용하더라도 브라우저가 인터넷 사이트로 간주되고 로그인에 실패합니다. 참조

string authority = "https://adfs.domain.com/adfs"; 
string resourceURI = "https://local.ip:44325"; 
string clientID = "19cda707-b1bf-48a1-b4ac-a7df00e1a689"; 
AuthenticationContext ac = new AuthenticationContext(authority, false); 
// I expect that the user's credential are picked up here. 
AuthenticationResult authResult = 
    await ac.AcquireTokenAsync(resourceURI, clientID, 
           new UserCredential()); 
string authHeader = authResult.CreateAuthorizationHeader(); 
var client = new HttpClient(); 
var request = new HttpRequestMessage(HttpMethod.Get, 
         "https://local.ip:44325/api/values"); 
request.Headers.TryAddWithoutValidation("Authorization", authHeader); 
var response = await client.SendAsync(request); 
string responseString = await response.Content.ReadAsStringAsync(); 

에 대한

코드 호출이 acquiretokenasync에 실패합니다.

답변

0

here에 설명 된 제약 조건을 위반 했습니까?

또한 ADAL V3.0 및 UserCredential 지원과 유사한 질문 here.

위 링크에서 PowerShell을 사용하여 RP를 만들었습니다. ADFS 4.0 - clientID 등에서 응용 프로그램을 올바르게 구성 했습니까?

+0

@nzpcmd 감사합니다. 정규 AD 광고 시나리오입니다. 게시물에서 말했듯이 AAD가 아닙니다. userPasswordCredential을 사용하여 올바르게 인증 할 수 있습니다. 동일한 사용자에 대해 문제는 userCredential에서 발생합니다. – amritanshu

+0

이전 내용을 편집 할 수 없으므로 adal이 자동으로 양식 인증을 받고 실제로 Windows 인증을 사용하지 않는 것 같습니다. ADFS에서 양식 인증을 사용하지 않도록 설정 한 경우 (Windows 인증 만 남아있는 유일한 방법 임) UserPasswordCredential도 작동하지 않습니다. – amritanshu