- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在研究适合以下客户端/服务器场景的安全设置,并且我有几个问题/注意事项想与您分享。
情况:我在不同平台上有许多客户:
绝大多数相应的服务器组件都基于使用 REST 的 .NET WCF(但对于某些后端,我使用其他协议(protocol))。
我找到了开源项目IdentityServer v2 from ThinkTecture成为我的解决方案的一个良好且灵活的安全 token 服务(STS)。它支持多种 token 类型、协议(protocol),并且具有高度可扩展性,并且如果需要,还具有基于 ASP.NET 成员(member)数据库的自包含身份提供程序 (IdP)。
客户端使用用户名/密码的基本流程如下:
我知道步骤 #2 将 HTTP 401 错误消息与通常与 HTTP 3xx 状态代码关联的 HTTP Location header 相结合有点不正统。我需要 401 状态代码,因为我的 jQuery/AJAX 客户端会自动处理 302 重定向消息,而没有任何机会拦截重定向。
现在,系统需要使用外部 IdP。 “内部”STS 被定制为将身份验证请求转发到外部 IdP,处理从外部 IdP 格式到内部格式的声明转换。这样做的一个问题是它暗示了“密码反模式”,但目前所有系统都是内部且值得信赖的。
WS Federation 可以成为我的 friend 吗?
上述基本流程适用于所有客户端,无论是否基于浏览器。但对于特定的浏览器客户端,我一直在研究联合安全场景,让生成的 IdP/STS 为客户端提供登录机制。我使用的 STS (IdentityServer) 可以配置为与 WS-Federation 兼容的 STS 结合使用。因此, token 会自动传输为目标 token 格式(在我的例子中,例如从外部 STS 的 SAML token 到内部 JWT token )。有了这个,我就可以拥有某种 SSO 机制。
现在我的问题:
最佳答案
我不认为你所描述的是WS-Fed。 WS-Fed 从不涉及 401,也从不涉及身份验证 header 。
WS-Fed 有两个版本:被动式和主动式。
被动适用于浏览器。它包含在 302 中发送给身份提供商,身份提供商又将 SAML token POST 回调用者。然后由 cookies 支持身份验证。
Active 适用于事件客户端(应用程序)。它包含在 SOAP 响应中,指示调用者前往身份提供者处获取 token 。来自身份提供者的 SOAP 响应包含一个 token ,然后将该 token 提供给服务。
我认为,如果您的客户端不支持 WCF 联合身份验证绑定(bind) (wsTrustFeb2005),则事件场景会相当复杂。您必须自己实现该流程。
我想推荐的是 OAuth2 流程。 OAuth2 有 4 种不同的流程,其中两种对应 WS-Federation 的主动和被动:授权代码流程适用于基于浏览器的应用程序,隐式流程适用于桌面/移动应用程序。
http://aaronparecki.com/articles/2012/07/29/1/oauth2-simplified#authorization
OAuth2 可以轻松地与 WebAPI 服务集成,并且 DotnetOpenAuth 库对其提供了很好的支持。
Pro ASP.NET WebAPI Security 书中详细描述了此选项和其他身份验证/授权选项
http://www.amazon.com/Pro-ASP-NET-Web-API-Security/dp/1430257822
即使您不打算围绕 WebAPI 构建后端(而是如您提到的 RESTful WCF),本书也会为您提供有关 OAuth2 的必要背景知识。
另一方面,如果您仍然坚持 WS-Federation,这本免费电子书描述了主动和被动场景:
关于security - 基于 token 的安全策略和注意事项,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20369604/
我正在运行PHP脚本,并继续收到如下错误: 注意:未定义的变量:第10行的C:\ wamp \ www \ mypath \ index.php中的my_variable_name 注意
我正在运行PHP脚本,并继续收到如下错误: 注意:未定义的变量:第10行的C:\ wamp \ www \ mypath \ index.php中的my_variable_name 注意
我正在运行PHP脚本,并继续收到如下错误: 注意:未定义的变量:第10行的C:\ wamp \ www \ mypath \ index.php中的my_variable_name 注意
我正在运行一个PHP脚本,并且继续收到如下错误:。第10行和第11行如下所示:。这些错误消息的含义是什么?。为什么他们突然出现了?我多年来一直使用这个脚本,从来没有遇到过任何问题。。我该怎么修理它们呢
当我在 flutter clean 之后运行 flutter run 或 debug my code 时显示此错误 Note: C:\src\flutter.pub-cache\hosted\pub.
My Goal: To fix this error and be able to run my app without an error. Error Message: Note:D:\Learni
前言:今天在解决一个问题时,程序总是不能输出正确值,分析逻辑思路没问题后,发现原来是由于函数传递导致了这个情况。 LeetCode 113 问题:给你二叉树的根节点
我正在 R 中开发一个包,当我运行时 devtools::check()我收到以下说明。 checking DESCRIPTION meta-information ... NOTE Malforme
获得通知和警告波纹管 Notice: Use of undefined constant GLOB_BRACE - assumed 'GLOB_BRACE' in /var/www/html/open
我正在准备一个 R 包以提交给 CRAN。 R CMD 检查给了我以下注意: Foreign function calls to a different package: .Fortran("cinc
我正在尝试从以下位置获取数据: http://api.convoytrucking.net/api.php?api_key=public&show=player&player_name=Mick_Gi
我有这段代码,但我不明白为什么我仍然有这个错误,我已经尝试了所有解决方案,但无法解决这个问题:-注意:未定义索引:product_price-注意:未定义索引:product_quantity-注意:
This question already has answers here: “Notice: Undefined variable”, “Notice: Undefined index”, and
我正在尝试从以下位置获取数据: http://api.convoytrucking.net/api.php?api_key=public&show=player&player_name=Mick_Gi
切记,在PHP 7中不要做的10件事 1. 不要使用 mysql_ 函数 这一天终于来了,从此你不仅仅“不应该”使用mysql_函数。PHP 7 已经把它们从核心中全部移除了,也就是说你需要迁移
前几天安装了dedecms系统,当在后台安全退出的时候,后台出现空白,先前只分析其他功能去了,也没太注意安全,看了一下安全退出的代码,是这样写的: 复制代码 代码如下: function ex
我使用此代码来检查变量$n0、$n1、$n2是否未定义。 但每次未定义时我都会收到通知。我的代码是一种不好的做法吗?还有什么替代方案吗?或者只是删除通知,代码就可以了? if
编写代码时处理所有警告是否重要?在我公司中具有较高资历的开发人员坚持认为警告是无害的。诚然,其中一些是: Warning: Division by zero Notice: Undefined ind
我有一个搜索查询,执行搜索查询后,我将$ result放入数组中。 我的PHP代码- $contents = $client->search($params); // executing the se
This question already has answers here: “Notice: Undefined variable”, “Notice: Undefined index”, and
我是一名优秀的程序员,十分优秀!