2016-02-23 5 views
1

Я пытаюсь получить интегрированную безопасность (через NTLM через ADFS) для работы с клиентом Azure ADAL .NET (v2.19). На нашем сервере ADFS работает ADFS 3.0 с включенными формами и аутентификацией Windows (как описано здесь http://blogs.msdn.com/b/josrod/archive/2014/10/15/enabled-forms-based-authentication-in-adfs-3-0.aspx).Azure ADAL Integrated Security

В настоящее время я сделал следующую попытку и получить следующее сообщение об ошибке:

var authenticationContext = new AuthenticationContext("https://login.microsoftonline.com/" + UserPrincipal.Current.UserPrincipalName.Split('@')[1]), false); 
var nativeClientId = "00000000-0f32-4c38-bdb9-4ea5bd732c69"; 
var token = authenticationContext.AcquireTokenAsync(Constants.ReportingApplicationUri, nativeClientId, new UserCredential()).Result; 

System.AggregateException occurred 
    HResult=-2146233088 
    Message=One or more errors occurred. 
    Source=mscorlib 
    StackTrace: 
     at System.Threading.Tasks.Task`1.GetResultCore(Boolean waitCompletionNotification) 
:line 68 
    InnerException: 
     ErrorCode=federated_service_returned_error 
     HResult=-2146233088 
     Message=Federated service at https://ds1.mycorp.com/adfs/services/trust/2005/windowstransport returned error: The message with Action 'http://docs.oasis-open.org/ws-sx/ws-trust/200512/RST/Issue' cannot be processed at the receiver, due to a ContractFilter mismatch at the EndpointDispatcher. This may be because of either a contract mismatch (mismatched Actions between sender and receiver) or a binding/security mismatch between the sender and the receiver. Check that sender and receiver have the same contract and the same binding (including security requirements, e.g. Message, Transport, None). 
     Source=Microsoft.IdentityModel.Clients.ActiveDirectory 
     StatusCode=500 
     StackTrace: 
      at Microsoft.IdentityModel.Clients.ActiveDirectory.WsTrustRequest.<SendRequestAsync>d__1.MoveNext() 
     --- End of stack trace from previous location where exception was thrown --- 
      at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task) 
      at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) 
      at Microsoft.IdentityModel.Clients.ActiveDirectory.AcquireTokenNonInteractiveHandler.<PreTokenRequest>d__4.MoveNext() 
     --- End of stack trace from previous location where exception was thrown --- 
      at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task) 
      at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) 
      at Microsoft.IdentityModel.Clients.ActiveDirectory.AcquireTokenHandlerBase.<RunAsync>d__0.MoveNext() 
     --- End of stack trace from previous location where exception was thrown --- 
      at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task) 
      at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) 
      at Microsoft.IdentityModel.Clients.ActiveDirectory.AuthenticationContext.<AcquireTokenCommonAsync>d__0.MoveNext() 
     --- End of stack trace from previous location where exception was thrown --- 
      at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task) 
      at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) 
      at Microsoft.IdentityModel.Clients.ActiveDirectory.AuthenticationContext.<AcquireTokenAsync>d__14.MoveNext() 
     InnerException: 
      HResult=-2146233079 
      Message=The remote server returned an error: (500) Internal Server Error. 
      Source=System 
      StackTrace: 
       at System.Net.HttpWebRequest.EndGetResponse(IAsyncResult asyncResult) 
       at System.Threading.Tasks.TaskFactory`1.FromAsyncCoreLogic(IAsyncResult iar, Func`2 endFunction, Action`1 endAction, Task`1 promise, Boolean requiresSynchronization) 
       --- End of stack trace from previous location where exception was thrown --- 
       at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task) 
       at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) 
       at Microsoft.IdentityModel.Clients.ActiveDirectory.HttpWebRequestWrapper.<GetResponseSyncOrAsync>d__2.MoveNext() 
       --- End of stack trace from previous location where exception was thrown --- 
       at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task) 
       at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) 
       at Microsoft.IdentityModel.Clients.ActiveDirectory.WsTrustRequest.<SendRequestAsync>d__1.MoveNext() 
      InnerException: 

ответ

3

v2.21 в Адал имеет исправление для решения этой проблемы, где интегрированные аутентификации неправильно предполагается WS-Trust1.3

Смежные вопросы