基于浏览器的身份验证对话框无法完成

时间:2018-12-13 02:23:44

标签: c# wpf adfs adal

我有一个WPF应用程序,并且正在关注本教程:https://blogs.msdn.microsoft.com/dsnotes/2017/05/10/adal-secure-web-api-with-adfs-3-0-for-desktop-client/,以使WPF可以通过ADFS进行身份验证。

我在主页上有一个按钮,下面是按钮单击事件处理程序的代码:

string authority = "https://server1.mycompany.local/adfs";
string resourceURI = "https://localhost/MyWebAPIsample/";
string clientID = "bdf737f9-567a-4998-b5e5-500b9bc2d776";
string clientReturnURI = "https://arbitraryreturnuri/";

var authContext = new AuthenticationContext(authority, false);
var authResult = await authContext.AcquireTokenAsync(resourceURI, clientID, new Uri(clientReturnURI), new PlatformParameters(PromptBehavior.Auto));

var authResult = await ...的最后一行,我得到此错误: Microsoft.IdentityModel.Clients.ActiveDirectory.AdalServiceException: ' The browser based authentication dialog failed to complete. Reason: The request could not be processed by the server due to invalid syntax.'authentication_ui_failed

但是,在UI上,我清楚地看到了身份验证窗口弹出窗口,我可以输入我的AD凭据来登录。我尝试了其他帖子中的修复程序,但似乎无法弄清楚出了什么问题。我的代码有什么公然的错误吗,或者我应该仔细检查以确定发生了什么?我还是AD,ADFS和ADAL库的新手。谢谢!

注意:我将Visual Studio 2017与Windows Server 2016一起使用。我有一个NodeJS后端,但这与我不认为的讨论无关。

1 个答案:

答案 0 :(得分:0)

经过几个小时的愚蠢的调试,我终于解决了这个问题。在另一个线程上,我遇到了一个说“启用表单身份验证”的解决方案,我检查并启用了它,因此我认为这很好。但是,我检查了其他项目(再次,我仍然对ADFS还是陌生的),这导致我的系统不使用表单身份验证(我不知道-我所知道的是我正在输入AD用户凭据) 。取消选择所有其他选项后,身份验证似乎与我原来的身份验证窗口略有不同,并且可以正常工作。

这是Windows Server 2016上访问“身份验证”的步骤,就像我五岁一样,因为这是我对adfs的了解程度

  1. 打开服务器管理器
  2. 在工具下,打开“ AD FS管理”
  3. 点击左侧的Services标签
  4. 右键单击Authentication Methods,然后选择Edit Primary Authentication Methods
  5. 在Intranet和Extranet上取消选择Forms authentication以外的所有身份验证方法