不使用 SAML 授权的 SAML 身份验证

SAML Authentication without using SAML Authorization

我被要求实现与 SAML 2.0 IdP 的集成以用于用户身份验证。我从来没有使用过任何联合授权流程,所以这对我来说是全新的,所以如果我问的是一个愚蠢的问题,请原谅,但就这样吧。

对于我的需要,我只想发送一个 SAMLP 身份验证请求。如果我收到一个说用户有效的响应,我将授予他们访问我的系统的权限,该系统的用户 ID 与返回的内容相匹配。从那时起,所有授权都将由我的系统执行,我不需要在每次请求时向 SAML IdP 发送令牌。他们登录后,我就完成了 IdP。

我在此处和其他网站上看到的许多问题和示例都包括向我的项目添加大量库。当我查看它们及其相关文档时,它们似乎都希望通过 IIS 模块或通过与 MVC 路由机制集成对每个请求执行身份验证。

现在回答我的问题。我不能自己创建 XML 并将其作为 SAMLRequest 值粘贴在查询字符串上吗?然后解析返回的响应 XML 以获得我需要的值?如果这是一种有效的方法,是否有人有一些示例代码可以做到这一点?

如有任何帮助,我们将不胜感激

您描述的流程通常是如何完成的:向 Idp 发出一个 SAML2 请求以验证用户身份,然后为所有后续请求设置一个会话 cookie。

除非您想花大量时间了解 SAML2 和 XML 签名验证规则,否则请勿自行创建。它们 复杂 并且大多数自定义实现都会出错,从而导致安全性受损。

我自己的图书馆,Kentor.AuthServices 以您想要的方式工作。即使它作为 httpmodule、mvc 控制器或 owin 中间件出现,它也只会干扰构成实际登录的第一个请求。所有后续请求都将通过,会话 cookie 机制处理会话身份验证。