我第一次登录我的网络服务时,我想使用FormsAuthentication,例如
myService.ClientCredentials.UserName.UserName = "name";
myService.ClientCredentials.UserName.Password = "password";
但是一旦用户登录我的网络应用程序,我不想知道他的密码,所以我希望能够在不知道密码的情况下以该用户身份连接到网络服务。这可能吗?
答案 0 :(得分:0)
我会在访问Web服务的前端保存密码,然后在用户调用Web服务时将其传递给幕后。
基本上,设计您的Web服务始终使用密码,但让前端缓存密码,这样一旦用户输入密码,前端就不会再问。
预先警告,保持密码缓存可能存在安全问题,因为我认为这将是会话的一部分。我不熟悉.net处理这个问题,但你可能想看看hashing。
答案 1 :(得分:0)
您应该可以这样做,但有几个问题需要考虑。基于表单的身份验证(FBA)通常使用cookie来跟踪身份验证。
安全性 - 配置Web应用程序 和Web服务使用相同的FBA数据库。
域名 - 只要是网络服务 与网络位于同一个域中 应用程序,Web服务可以使用 相同的身份验证cookie。如果 客户端已禁用cookie,然后这个 可能行不通。
Cookie过期 - 您需要配置 认证的持续时间 可接受的时间限制(30分钟,1小时, web.config文件中的1天或更长时间。这个 将允许用户访问Web服务 在他或她之后的适当时间范围内 已登录。
答案 2 :(得分:0)
您可以在网络服务中启用会话。您可以在服务声明的开头添加一个简单的令牌。
<WebMethod(True)> Method Name