编辑:(摘要):我首先想要一种方法,将一个自定义的,特定于用户的属性作为ADFS登录的一部分传递给我们;如果这是合理的,我会深入研究如何保护它。
编辑:(澄清):我不想在登录时通过AD传递内容 - 如果用户必须输入密码并且然后进行身份验证再次反对AD,他们最终会得到令人困惑的,不匹配的密码。相反,我希望我们注册这样:
然后在每次登录时:
这比我们通常提供的安全性要低,但如果涉及到AD,这是我能想到的最好的安全性。这可能吗?
长版本:客户要求我们为我们的网络应用程序添加对单点登录的支持,实施Microsoft ADFS(Active Directory联合服务)。
问题是我们依靠用户的密码来解密他们的记录;他们的私钥用他们的密码加密,所以我们无法在没有密码的情况下访问他们的记录。
我一直在深入研究文档,例如http://msdn.microsoft.com/en-us/library/bb897402.aspx - 但目前我还没有办法使用AD FS安全地管理某种秘密加密密钥。
当然,它不一定是密码本身 - 我们通过生成具有与密码相同属性的随机访问令牌来实现OAuth2(可用于解密用户的记录)...但是传入经过身份验证的用户需要使用某种类型的安全私有令牌。
非常感谢任何指导!
答案 0 :(得分:0)
如果您使用的是ADFS 2.0,则可以customize the pages。
所以你可以,例如获取密码,将其修改,在调用SignIn之前将其写入AD,然后使用声明规则通过此密码。然后在您的应用程序中反转该过程。
注意 - 我并不是说这是一个“好”的解决方案 - 只是你可以做的一个例子。
显然安全需要至关重要!
答案 1 :(得分:0)
有两种方法可以解决您的问题。
自定义ADFS SignOn页面(您应该进行备份)以创建接收用户密码的表单。这是一个webforms aspx页面,所以你应该没有问题。从那里,您必须构建自己的STS以向ADFS发出声明,以便ADFS可以将这些声明传递给您的依赖方。将自定义STS作为属性存储映射到ADFS
你手边拿着安全,只是做错了。 ADFS使用HTTPS进行传输级别的安全性,使用SAML 2.0进行安全加密来处理您的信息,因此另一种加密方式也很简单。
让我知道你喜欢哪种方式