我创建了一个安全令牌服务(STS),一个引用STS的服务和一个示例桌面应用程序.
当使用Windows身份验证和Message安全性时,这可以正常工作,从STS检索令牌并成功调用服务方法.该服务返回一个包含当前用户标识的字符串,该标识符返回我的AD用户名.
但是我要求对数据库而不是AD进行身份验证.我试过创建一个CustomUserNameValidator(在STS中,这是正确的位置吗?)并在web.config中引用它.然后,我提供如下所示的凭据.
SampleServiceReference.SampleServiceClient client = new SampleServiceReference.SampleServiceClient();
client.ClientCredentials.UserName.UserName
= "alex";
client.ClientCredentials.UserName.Password
= "pass";
我相信证书设置正确(全部使用'localhost'),但是在调用服务时我收到以下异常:
System.ServiceModel.FaultException:ID3242:无法对安全令牌进行身份验证或授权.
无论我尝试什么似乎都失败了.我所描述的甚至可能吗?服务客户端是否也将客户端凭据传递给STS,或者我完全误解了这里发生的事情?
这个stackoverflow问题是类似的,但我已经检查了受众URL,似乎没问题.WIF STS ID3242
有没有人对如何在使用STS时实现自定义身份验证有任何建议?
我构建了一个简单的查询来返回用户团队成员资格(N:N关系).这适用于所有用户,但是当我添加一个where子句来限制特定用户时,它会抛出一个错误异常(请参阅下面的stacktrace).
奇怪的是,这适用于"Where Users.FullName.StartsWith("Alex")".Dynamics CRM SDK LINQ实现不支持where子句中的Guids吗?
有什么建议?
示例代码
using (var service = new OrganizationService("Xrm"))
{
using (var xrm = new XrmServiceContext(service))
{
var AlexUser = xrm.SystemUserSet.Where(p => p.FullName.StartsWith("Alex")).First();
var AlexID = AlexUser.Id;
var Test =
from Users in xrm.SystemUserSet
join TeamMemberships in xrm.TeamMembershipSet on Users.Id equals TeamMemberships.SystemUserId
join Teams in xrm.TeamSet on TeamMemberships.TeamId equals Teams.Id
where Users.Id == AlexID // <-- problematic where clause
orderby Users.FullName
select new
{
FullName = Users.FullName,
UserID = Users.Id,
TeamName = Teams.Name
};
var …Run Code Online (Sandbox Code Playgroud) 我有一个可编辑的WPF ComboBox与TextSearchEnabled.当他们键入以过滤ComboBox时,我需要强制用户的文本输入为大写.
我正在考虑修改作为控件一部分的文本框(名为'PART_EditableTextBox')以设置CharacterCasing ="Upper",但是我无法弄清楚如何执行此操作.
我是否需要使用触发器,或以某种方式修改模板?