O. *_*nes 5 authentication desktop-application ldap active-directory single-sign-on
我有一个工作的 c#/dotnet Windows 桌面应用程序,它通过访问我的 Web 应用程序中的各种 Web 服务来完成其工作。当桌面应用程序启动时,它会提示用户输入用户名/密码,然后点击我的登录 Web 服务,该服务返回一个会话令牌。
我有一个拥有许多用户的大型组织客户。该客户希望直接从他们的域控制器为我的组合桌面/Web 应用程序提供身份验证/授权。他们想要单点登录,因此我的桌面应用程序不会提示用户输入用户名和密码。
我的桌面应用程序如何从 Windows(可能从用户的安全主体对象)检索可用的身份验证/授权令牌?我的 Web 应用程序如何验证该令牌,以便它可以信任桌面应用程序并向其发送会话令牌?
(我的 Web 应用程序在我的环境中运行,而不是在客户的域中运行。)
对于纯 Web 应用程序客户,我使用 SAML2 和 Active Directory/联合身份验证服务成功地做到了这一点。SAML2 舞蹈让我的用户浏览器向客户的 AD/FS 服务器发布请求,然后将签名的响应发布回我的 Web 应用程序。
但我不知道如何从桌面应用程序干净地完成它。有什么智慧吗?
您可以在 github 中查看此示例(由 jelledruyts 提供):面向 .NET 开发人员的现代基于声明的身份方案
\n\n它具有使用 Azure Active Directory 和/或 Windows Server Active Directory 联合身份验证服务进行身份验证和授权的示例。
\n\n我建议阅读这篇文章.NET 应用程序的数字身份。它有点旧,但是一个很好的概述/评论。
\n\n\n\n\n令牌有多种不同的格式。然而,对于当今\xe2\x80\x99s .NET 应用程序,\n 三种令牌是最重要的。它们是\n以下:
\n\n\n
\n- 用户名/密码令牌\xe2\x80\x94 这个非常简单的令牌仅包含两个\n 声明:某个主体的名称和该主体\xe2\x80\x99 的密码。
\n- Kerberos 票证\xe2\x80\x94比用户名/密码令牌更复杂,\n 票证包括主题\xe2\x80\x99s 名称、主题\xe2\x80\x99s Windows\n 域的名称以及其他信息。Active Directory 颁发的 Kerberos 票证还包括一个扩展,其中包含安全标识符 (SID),用于标识主题以及该主题所属的组。
\n- SAML 令牌\xe2\x80\x94安全断言标记语言 (SAML) 是一种基于 XML 的语言,由 OASIS\n 多供应商标准组拥有。与此处描述的其他令牌类型不同,SAML 令牌没有为其定义一组固定的声明。相反,这种令牌可以包含其创建者选择的任何声明。
\n
\n\n\n一旦声明可用,Windows、应用程序或两者都可以使用它们。声明的最常见用途包括\n以下内容:
\n\n\n
\n- 验证用户身份(...)
\n- 做出授权决定(...)
\n- 了解该用户(...)
\n
认证种类:
\n\n\n\n\n基于域的应用程序仅接受带有一组固定声明的单一令牌格式。一个常见的示例是仅接受 Kerberos 票证的 Windows 应用程序。这种应用程序很容易创建,并且在单个 Windows 域中运行良好。问题\n 是这种简单的数字身份方法\n 对于许多应用程序来说不再\n 足够了
\n
\n\n\n与基于域的应用程序不同,基于声明的应用程序可能接受具有不同声明集的多种令牌格式。此应用程序接受的令牌格式和声明集由应用程序本身确定。
\n
身份识别技术
\n\n\n\n\n由于 AD 域服务实现 Kerberos,因此Windows 环境中的默认令牌是 Kerberos 票证。要使用此默认值,\n ASP.NET 应用程序指定 Windows 集成身份验证,而 \n WCF 应用程序则使用适当的绑定,例如 NetTcpBinding。\n 无论哪种情况,下图说明了 Windows 应用程序与客户端在同一域可能使用 Kerberos\n 票证和 AD 域服务
\n
AD FS 的第一个版本仅支持 Web 客户端的 SAML。
\n\n\n\n\nADFS 1.0 仅支持浏览器客户端\xe2\x80\x94a 限制,\xe2\x80\x99s 计划在下一版本的技术\xe2\x80\x99s 中更改。
\n
希望能帮助到你。
\n| 归档时间: |
|
| 查看次数: |
2156 次 |
| 最近记录: |