1

鉴于以下各方:

基于浏览器的客户端
ASP.Net MVC 4 Web 应用程序
ASP.Net Web API 服务
Security Token Service (STS) 即 Thinktecture IdentityServer
(注意:Web 应用程序和 WebAPI 服务位于不同的盒子上)

我想得到一个类似于这个工作的流程:

用户导航到 WebApp,应用程序在请求中看不到有效令牌,并重定向用户以通过 STS 进行身份验证。用户登录到 STS 并在成功验证后重定向回 WebApp。WebApp 看到有效的令牌并授予用户访问权限。用户尝试在 WebApp 上执行需要对 WebAPI 进行服务调用的操作。WebApp 在服务请求中传递用户令牌。WebAPI 服务看到令牌,禁止访问并返回错误,或代表用户授权请求并返回结果。

此外,我希望客户端能够通过 AJAX 调用直接对 WebAPI 服务进行服务调用。

到目前为止,我可以使用 Web 应用程序重定向到 STS 并返回,但是如何将令牌从 Web 应用程序传递到 Web API 服务?

另外,如何让 JavaScript 客户端在 AJAX 调用中传递令牌?

4

2 回答 2

1

好吧 - 如果您使用 SAML,您可以立即执行此操作。

网站登录返回一个 SAML 令牌,saveBootstrapContext 功能保存该令牌以供以后使用 - 您可以将其转发到您的 Web api。

在 Web API 中,您可以使用 SAML 使用 thinktecture 身份模型。对于 AJAX 调用,提供一种从 JS 检索 SAML 令牌并将其在授权标头上发送到 Web API 的方法。

这不是最优的。但是对于一直执行 JWT(这将是首选方式) - 现在缺少一些位(例如 IdSrv 仅支持对称签名,我的 JWT 处理程序不支持引导上下文、MS JWT 处理程序和对称签名通过配置也是一个问题)。

我正在做这件事。但就目前而言,这种情况有一些粗糙的边缘。

于 2013-02-22T06:24:08.493 回答
0

如果两个服务都在同一个域中,您可以使用 cookie。

于 2013-02-24T17:34:46.253 回答