0

我正在为我的 web api 创建一个身份验证控制器。本质上,当我的应用程序的用户创建一个帐户时,我的控制器需要接收用户的数据和密码(它不是包含用户其余数据的类型的一部分)。

只有这一次是未散列发送到 web api 的密码。该控制器将哈希盐返回给用户,他将其用于身份验证请求。但我的问题是我无法将密码与正在创建的用户对象一起绑定到正文,因为 web api 只接受一个正文参数,并且用户信息正在那里。所以......这给我留下了密码的URI。这比在体内传递它更安全吗?有没有更好的方法来制作这个请求?

谢谢!

4

2 回答 2

1

我不确定我是否正确理解了您的机制。首先,如果您曾经发送未加密的密码(例如,当用户注册时),请确保您使用 SSL。同样适用于发送盐(以防止对用户密码的字典攻击)。

如果您不想将密码作为操作参数的一部分发送,您始终可以使用 http 标头并使用 HttpRequestMessage.Headers 属性检索密码字符串。

不知道您所说的 web api 只接受一个 body 参数是什么意思,但请记住,您发送到 Web API 操作的对象可能很复杂,即。可以由用户对象和密码字符串组成。

于 2012-10-21T09:27:43.610 回答
1

所以......这给我留下了密码的URI。

哦没必要。您可以使用自定义 HTTP 标头。Cookie 是此类请求标头的一个示例,可用于发送身份验证令牌。或授权标头。甚至是自定义标题。

例如this post,我展示了如何通过 Web API 使用基本身份验证并查询成员资格和角色提供程序。

于 2012-10-21T09:29:01.417 回答