NET应用程序的SSO / SAML

时间:2018-12-07 08:28:50

标签: .net saml-2.0

背景

我有一个.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中当前仍具有的用户名+密码吗? 我可以在过程中的某个时候设置正确的标题吗? 如果可以,怎么办?

1 个答案:

答案 0 :(得分:0)

SAML stacks的列表。

为什么要使用SAML?

如您所指出的,SAML使用浏览器重定向。

我建议使用ADAL库,即OpenID Connect。