1

我正在尝试调查在我正在开发的系统中使用声明感知安全性的可能性。我对所有这些东西的阅读越多,我就越困惑。所以我决定描述一下我已经知道的,我会要求你纠正我的陈述。我迷失了所有使用的协议和技术。

下面是我的系统的简单示意图。有两个服务 - 一个使用 WCF 实现的 REST 服务和一个 ASP MVC Web 应用程序。我知道我需要获得一个 STS,它将成为我的两项服务的可信身份颁发者。我将使用角色来区分某些访问级别。

在此处输入图像描述

STS 功能可以通过使用 ADFS(或者除此之外还需要什么)或 WSO2 Identity Server 来完成。通过说 STS,我的意思是一种服务,它将从想要进行身份验证的客户端获取凭据并返回一组声明(除了其他信息之外,还包含分配给用户的角色)。这组声明将采用令牌的形式。

在图表上,我用不同的颜色标记了不同的客户类型。不,我将尝试描述我认为将使用哪些协议/格式。我对什么是格式和什么是协议感到很困惑。但让我试试:

红色场景:富 WCF 客户端再次验证 REST 服务

  1. 对 STS 的请求将使用 WS-trust 发送(ADFS 或 WSO2 中是否还有其他可能性?)。凭据可能采用多种形式之一,例如 X.509 证书、密码摘要、kerberos、Windows 身份验证、SAML 令牌(这用于联合场景,对吗?)等等。

  2. 对客户端的回答将以通过 OAuth 协议发送的 SWT 令牌的形式,因为这是我们在尝试针对 REST 服务进行身份验证时执行此操作的方式。

    • ADFS 是否支持 SWT 和 OAuth?我找不到信息。
  3. 然后,客户端将从 STS 接收到的令牌发送到 REST 服务。这又是 OAuth 上的 SWT 令牌。

我想客户端代码都可以使用 Windows Identity Framework 轻松实现。

绿色场景:富 android 客户端针对 REST 服务进行身份验证

所有协议/格式都与之前的场景相同。是否有任何框架可以让我轻松实现这一点?

蓝色场景:Web 浏览器用户针对 ASP MVC Web 应用程序进行身份验证

  1. 用户转到 Web 应用程序的主页。webapp 检测到他尚未通过身份验证,因此将他重定向到 STS 上的登录页面(登录页面在 STS 上,对吗?)。

  2. 3. STS 对用户进行身份验证并将包含 SAML 令牌和重定向的 HTTP 响应发送到 webapp。所以这里使用的是 HTTP,而不是 WS-Trusts。

另一个问题。在这个 Web 浏览器场景中,将有一个 cookie 写入客户端的机器上。因此,每当客户端再次尝试进行身份验证时,他只会将 cookie 发送到 sts 以获取令牌。无需发送凭据。STS 将根据 cookie 颁发令牌,而不涉及任何真正的身份验证逻辑。这种说法正确吗?

4

1 回答 1

2

开箱即用的 ADFS/WIF 仅支持 SAML 令牌 - 不支持 OAuth。

ADFS/WCF 使用 WS-Trust。

登录页面是 ADFS 的一部分。

您的最后一个问题的答案是“是”,但(在某些时候)它将过期并且用户将不得不再次进行身份验证。

更新:

查看基于声明的身份和访问控制指南

于 2013-01-13T18:01:05.690 回答