通过用户名和密码进行WCF服务授权

时间:2011-03-09 02:02:55

标签: wcf passwords authorization asp.net-3.5 username

编辑3.9.2011再添加一个相关问题

您好,

我现在对WCF很新,并且正在做一个速成课程。

我可以请第二眼检查我的计划吗?

以下是(计划的)详细信息:

目标是制作一个可通过互联网访问的WCF服务,该服务使用用户名和密码进行授权,并通过SSL传输受保护的凭据和邮件内容。

WCF SOAP服务

  • 绑定:wsHttpBinding
  • Auth:UsernameAuthentication(custom)
  • 安全模式:运输

这些物品会优雅地在一起生活吗?我不确定是否需要将安全模式更改为“TransportWithMessageCredential”。

一个相关问题:我正在尝试获取身份信息,类似于使用HttpContext.Current.User。这是我怎么做的?

IIdentity myIdentity = 
OperationContext.Current.ServiceSecurityContext.PrimaryIdentity;

如果我需要更改绑定,身份验证或安全模式,请告诉我。

非常感谢!

编辑 - 附加问题:首次构思时,计划是让消费者将用户名和密码作为消息的一部分发送。凭证将由SSL保护。然后,在相应的服务方法的代码中,如果他们有访问权限我会评估并停止它们。这似乎是一种更简单的授权方法,但是我需要了解哪些缺点?

1 个答案:

答案 0 :(得分:1)

是的,这些设置应该没问题 - wsHttpBinding支持使用用户名/密码凭据的传输安全性。

至于身份:在您的服务端代码中,您可以检查ServiceSecurityContext并在其上找到呼叫者的身份:

ServiceSecurityContext secCtx = ServiceSecurityContext.Current;
var identity = secCtx.PrimaryIdentity;