如何防止OrganizationService重用相同的STS令牌?

时间:2016-02-02 15:52:39

标签: asp.net-mvc authentication dynamics-crm

我有一个通过SDK OrganizationService连接到CRM的MVC应用程序。用户使用用户名和密码通过应用程序中的表单登录。 CRM组织使用基于声明的身份验证,并连接到ADFS 2.0服务器。

每当我尝试通过用户名和密码对用户进行身份验证时,新实例化的服务会重用从成功连接中获得的先前令牌。这使得用户可以使用正确的用户名重新登录 - 即使密码无效也是如此。我正在使用的连接被设置为具有 PerInstance 的instanceMode,并且它似乎没有帮助。

我觉得我在这里缺少必要的东西。我是否必须做一些事情来告诉CRM重新验证我的用户'凭据或我必须做些什么来告诉我们的STS服务器使以前发布的令牌无效?

感谢。

1 个答案:

答案 0 :(得分:0)

您的MVC应用程序不应使用其用户的凭据连接到CRM。相反,您应该使用MVC应用程序的服务帐户的凭据(即应用程序池标识)。

当然,服务帐户必须是CRM组织的用户,并且(在CRM中)应允许此用户帐户冒充其他用户。

当您的MVC应用程序需要代表特定用户访问CRM时,它会创建/获取@using (Html.BeginForm(new { id = "postform" })) { <input type="hidden" name="hiddens" id="xcoordResults" style="width: 250px" /> <input type="hidden" name="hiddens" id="ycoordResults" style="width: 250px" /> <input type="submit" value="Search" /> } 实例(可以重复使用)并将其 public ActionResult Index(IEnumerable<string> hiddens) { foreach (var item in hiddens) { //do whatter with item model.x_coord =Convert.ToDouble(hiddens.First().ToString()); model.y_coord = Convert.ToDouble(hiddens.Last().ToString()); } return View(model); } 属性设置为{{1}模仿用户。