【发布时间】:2018-12-07 08:28:50
【问题描述】:
背景
我有一个 .NET(不是 MVC 或 ASP.NET)应用程序(它是一个 Excel 插件),它对数据执行 1 次 REST 调用(REST 调用是受保护的资源 - 需要经过身份验证的用户)。 目前,此 Excel 插件使用基本身份验证(使用用户名/密码输入字段)向 REST 后端进行身份验证。 用户在 Windows 域上进行身份验证。
问题
我想摆脱用户名/密码输入并开始使用 SAML2 为这些用户实现真正的单点登录。来自此 .NET 应用程序。
问题 1:是否可以为我的应用执行客户端 SAML2 身份验证?
使用哪个框架/库?
如果可能的话(我希望如此......),我找到了这个信息:
“不是官方的 C# 客户端协议栈”,但是有各种实现 SAML2 的第三方库”,但这些似乎都集中在 ASP.NET 上。
- Sustainsys.Saml2
- OneLogin
- AspNetSaml
- ITfoxtec
我尝试了几个库,但它们似乎都想将用户(在浏览器中 - 我不在应用程序中使用)重定向到特定端点。
我不是 .NET 专家,所以如果可能的话,任何带有清晰示例/教程的库都将不胜感激。
2018-12-13 跟进
因此,只有在此 Excel 加载项应用程序的自定义窗格中包含 WebBrowserControl 时,才能进行真正的 SAML 身份验证。 此 WebBrowserControl 将处理 SAML 协商(包括跟踪所有重定向等)。 但是,我刚刚注意到,当我访问触发 Firefox 中 SAML 身份验证的 URL(它具有空的 NTLM 可信 URI)时,我得到了一个身份验证弹出窗口。当我输入我的凭据时,我就通过了身份验证。
问题 2
我是否仍然可以在没有 WebBrowserControl 的情况下在 .NET 后端执行 SAML 协商,但是通过提供我目前在我的 GUI 中仍然拥有的用户名 + 密码? 我可以在过程中的某个时刻设置正确的标题吗? 如果有,怎么做?
【问题讨论】:
-
在您的应用程序中显示一个 WebBrowserControl。
-
是的,这似乎是一种选择。我不知道我用来构建 Excel 插件的框架是否支持在功能区中添加 WebBrowserControl。有没有其他选择?完全原生(没有浏览器组件)身份验证是否可行?
-
我强烈怀疑没有浏览器是可能的。
-
好的,经过一番研究,WebBrowserControl 似乎确实是唯一的出路。您有多确定这真的可以与 WebBrowserControl 一起使用?是否有任何问题、特定的 IE 版本或操作系统要求?