我有一个通过SDK OrganizationService连接到CRM的MVC应用程序。用户使用用户名和密码通过应用程序中的表单登录。 CRM组织使用基于声明的身份验证,并连接到ADFS 2.0服务器。
每当我尝试通过用户名和密码对用户进行身份验证时,新实例化的服务会重用从成功连接中获得的先前令牌。这使得用户可以使用正确的用户名重新登录 - 即使密码无效也是如此。我正在使用的连接被设置为具有 PerInstance 的instanceMode,并且它似乎没有帮助。
我觉得我在这里缺少必要的东西。我是否必须做一些事情来告诉CRM重新验证我的用户'凭据或我必须做些什么来告诉我们的STS服务器使以前发布的令牌无效?
感谢。
答案 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}模仿用户。