使用WCF服务的联合身份验证提供程序
这涉及到,但我很肯定不会重复,我的问题:寻找一个安全和强大的STS实现
自从问起这个问题之后,来自业务和一些研究的一些意见使我相信,不是实现安全的令牌服务来包装我的自定义身份提供者,而是可以将令牌的发放委托给身份提供者本身。
身份提供者是一个WCF服务,它在成功验证用户身份时根据用户的某些识别数据返回一组声明。 例如
[ServiceContract(Namespace = "http://namespace")]
public interface IIdService
{
[FaultContract(typeof(IdServiceFault))]
[OperationContract]
ICollection<Claim> Authenticate(string idDatum1, string idDatum2);
}
Claim
是Microsoft.IdentityModel.Claims.Claim
。 作为一个网站项目,我目前坚持仅仅是一个质量STS实现的示例,但如果可能的话,我只想简单地将发布和签名令牌的任务移入身份提供者,并最终将其限定为WS - 联合身份提供商,我稍后可以将其包含在我的Azure访问控制的提供商中。
如果可能的话,我需要在WCF服务中做什么?
“人们不只是将WS联合身份认证提供商联合在一起” - 这涉及到许多必要的复杂性,主要是为了确保声明的安全性,完整性和可证明性。
你不想让这个东西错误 - 看看塔吉特,家得宝,索尼和其他人发生了什么!
我强烈建议您阅读并重新阅读Michele Leroux Bustamante的“构建自定义安全令牌服务”文章,直至您彻底了解STS的角色以及所涉及的各种复杂性。
请注意,为了构建安全的STS,您需要支持SAML,WS-Security,WS-Trust和WS-Federation,并使用SSL来安全传输令牌和数据。 您需要认真实施允许身份信息联合所需的通信协议的各个阶段。
一旦您深入了解主题,您将更好地理解为什么将STS作为与现有身份认证服务并排在一起的幕墙服务建立可能是一个好主意 - 而不是“污染“您现有的服务,其中涉及构建STS所涉及的相当复杂的问题。
如果这一切看起来像是很多工作中的一个,那就是(它应该是 - 安全性真的很高,真的很难!)。
我强烈建议您考虑使用Thinktecture的Identity Server,而不是自行构建。 令人敬畏的Dominick Baier &团队在构建强大的,设计良好的开源Identity Server方面做得非常出色,它支持WS-Fed以及OpenID,OAUTH等。
链接地址: http://www.djcxy.com/p/23557.html