我正在尝试研究在我正在开发的系统中使用声明感知安全性的可能性。我读到的所有这些东西越多,我就越困惑。 所以我决定描述我已经知道的内容,并且我会要求你更正我的陈述。我迷失了所有使用的协议和技术。
下面是我系统的简单图表。有两种服务 - 使用WCF实现的REST服务和ASP MVC Web应用程序。 我知道我需要获得一个STS,它将成为我的两项服务的可靠身份发行者。我将使用角色来区分某些访问级别。
STS功能可以通过使用ADFS(或除此之外还有其他需要)或WSO2 Identity Server来完成。 通过说STS我的意思是一种服务,它将从想要进行身份验证的客户端获取凭据并返回一组声明(其他信息将包含分配给用户的角色)。这组索赔将采用令牌的形式。
在图表上,我用不同的颜色标记了不同的客户端类型。不,我会尝试描述我认为将使用的协议/格式。我对什么是格式以及什么是协议感到困惑。但是让我试试:
将使用WS-trust发送对STS的请求(ADFS或WSO2中是否还有其他可能性?)。凭证可能是以下几种形式之一,例如X.509证书,密码摘要,kerberos,Windows身份验证,SAML令牌(这在联合方案中使用,对吗?),以及其他几种形式。
客户端的答案将采用通过OAuth协议发送的SWT令牌形式,因为这是我们在尝试对REST服务进行身份验证时的方式。
然后,客户端将从STS收到的令牌发送到REST服务。这又是OAuth上的SWT令牌。
我想至于客户端代码,可以使用Windows Identity Framework轻松实现。
所有协议/格式与之前的方案相同。是否有任何框架可以让我轻松实现这个?
用户转到网络应用的主页面。 webapp检测到他尚未经过身份验证,因此将其重定向到STS上的登录页面(页面上的登录位于STS上,对吗?)。
和3. STS对用户进行身份验证,并将包含SAML令牌和重定向的HTTP响应发送到webapp。所以这里使用的是HTTP,而不是WS-Trusts。
另一个问题。在此Web浏览器方案中,将在客户端的计算机上写入cookie。因此,每当客户端再次尝试进行身份验证时,他只会将cookie发送到sts以获取令牌。无需发送凭据。 STS将发布基于cookie的令牌,而不涉及任何真正的身份验证逻辑。这个陈述是否正确?
答案 0 :(得分:2)
开箱即用ADFS / WIF仅支持SAML令牌 - 无OAuth支持。
ADFS / WCF使用WS-Trust。
登录页面是ADFS的一部分。
对于您的上一个问题,答案是“是”,但(在某些时候)它将过期,用户将不得不再次进行身份验证。
<强>更新强>