我正在尝试使用Windows Azure Access Control来避免在我的应用中使用用户名/密码的安全风险,并简化身份验证。但是,这是一个可供希望“预先验证”用户的中型或大型公司使用的站点。换句话说,他们可能希望通过在用户通过Azure ACS登录之前插入用户的Windows Live ID并自动创建帐户来批量创建用户。我可以通过向该用户发送一封带有一次性使用页面链接的电子邮件来创建他们的帐户来实现这一目标,但我希望能够做一些更加无缝的事情。
我想要做的是等同于Team Foundation Service(* .visualstudio.com)如何通过放入他们的Windows Live ID来允许您将用户添加到团队项目中,一旦他们这样做,他们就可以登录访问项目,即使该用户以前从未登录过TFS。
我不明白如何使用ACS和System.IdentityModel来做到这一点。我可以使用nameidentifier声明来唯一标识用户,但如何通过给定的提供者为另一个用户获取nameidentifier?
如果我不能很好地解释这一点,我很抱歉,所以请随时提问。
答案 0 :(得分:2)
不是真正的答案,只是想分享我对这个问题的想法。
ACS和Windows Live身份验证的问题是ACS永远不会返回用户的电子邮件地址。我们从ACS返回的所有内容都是一个令牌,告诉我用户已通过身份验证。此令牌是基于您的ACS领域创建的(即,如果您更改ACS领域,ACS将为同一用户创建新令牌)。同样,使用您的应用程序的公司的管理员可以输入用户的电子邮件地址,但是无法从ACS获取该电子邮件地址。
大声思考:),你可以做一些事情:
myusername@yourtenantname.onmicrosoft.com
中提供我的凭据,以便我个人很麻烦。我们也经历过同样的痛苦,现在我们决定采用方法#2。
希望这有帮助。