我正在编写C#Web API。现在我正在进行身份验证。每个请求都将通过SSL完成,并要求用户通过SSL发出请求。
我想知道的是,如果我需要让用户在请求数据或进行身份验证时发送Base64编码字符串。它会是这样的。
登录方法控制器:
Public bool Login (User user)
用户包括:
{“Username”:“chris”,“Password”:“doggie”}
在这种情况下,Base64是否最好在请求标头中编码chis和doggie?或者这不是必要的吗?我是否需要在所有请求中发送base 64编码的字符串?
答案 0 :(得分:1)
就安全性而言,只要您使用SSL,这并没有什么不同。
但是,如果所有请求都需要发送用户名和密码,则将抽象此信息转换为Authorization
标头更有意义,以便将其与实际请求有效负载分开。
如果您决定使用基本身份验证,则需要在Authorization标头中将用户名和密码作为Base64编码的字符串发送。在此示例中,这是Authorization标头的外观:
Authorization: Basic Y2hyaXM6ZG9nZ2ll
我可能会弄错,但通过阅读您的问题,我觉得您认为Base64实际上保护了错误的用户名和密码。 Base64是可逆的,因此绝不用于任何安全性。这只是在HTTP请求中发送正确编码的二进制数据的便捷方式。