通过用户名和密码进行WCF服务授权
2011年9月3日编辑,增加一个相关问题 你好, 我是WCF的新手,现在正在参加速成班 能让我再看一眼我的计划吗 以下是(计划的)详细信息: 其目标是提供一个可访问互联网的WCF服务,该服务使用用户名和密码进行授权,凭证和消息内容在传输过程中受SSL保护 wcfsoap服务通过用户名和密码进行WCF服务授权,wcf,passwords,authorization,asp.net-3.5,Wcf,Passwords,Authorization,Asp.net 3.5,2011年9月3日编辑,增加一个相关问题 你好, 我是WCF的新手,现在正在参加速成班 能让我再看一眼我的计划吗 以下是(计划的)详细信息: 其目标是提供一个可访问互联网的WCF服务,该服务使用用户名和密码进行授权,凭证和消息内容在传输过程中受SSL保护 wcfsoap服务 绑定:wsHttpBinding 身份验证:用户名身份验证(自定义) 安全模式:运输 这些物品会优雅地生活在一起吗?我不确定是否需要将安全模式更改为“TransportWithMessageCredential” 一个相
- 绑定:wsHttpBinding
- 身份验证:用户名身份验证(自定义)
- 安全模式:运输
IIdentity myIdentity =
OperationContext.Current.ServiceSecurityContext.PrimaryIdentity;
如果需要更改绑定、身份验证或安全模式,请通知我
非常感谢
编辑-附加问题:最初构思时,计划是让消费者发送用户名和密码作为信息的一部分。凭据将由SSL保护。然后,在各自服务方法的代码中,我将评估它们是否具有访问权限并停止它们。这似乎是一种更简单的实现授权的方法,但我需要知道有什么缺点吗?是的,这些设置应该很好-wsHttpBinding支持使用用户名/密码凭据的传输安全性 至于身份:在您的服务端代码中,您可以检查
ServiceSecurityContext
,并在上面找到呼叫者的身份:
ServiceSecurityContext secCtx = ServiceSecurityContext.Current;
var identity = secCtx.PrimaryIdentity;
还有一个问题:我是否可以仅出于概念验证/测试目的,取消验证和密码验证并关闭“不使用传输安全性”?我想使用Cassini进行测试,而不是制作证书等来测试uname/密码功能。谢谢@不,我不这么认为。由于您将uname/pwd与消息一起发送,因此需要保护传输。澄清一下,这仅用于开发目的。你是说如果我使用UsernameAuthentication,那么在没有传输安全的情况下它将无法运行吗?另外-请参见询问相关问题的编辑。谢谢@D-Sect:是的,这是我的理解-如果您没有任何传输安全性,您就不能在wsHttpBinding中使用username/pwd身份验证。