在身份验证标头中传递数据库密码以及用户名和密码ASP.Net Web API

时间:2019-07-14 11:38:08

标签: c# sql-server asp.net-web-api http-headers basic-authentication

我有一个API,可以通过一个移动应用程序为多个用户提供服务。

通过在主dB用户表中找到匹配的用户记录来授权用户,对提供的密码进行哈希处理以查看其是否与用户表中的哈希密码匹配,并据此得知该用户可以被授权。

但是,随后的每个API事务必须使用与用户的dB凭据(服务器,dbuser和dbpass)相对应的正确DB进行。

我为用户设置了

DB凭据,因此我认为我可以为每个用户存储dbcredentials以及用户名或用户ID。然后,在对用户进行身份验证之后,我将知道哪个dB应该为数据服务。

但这需要我将dB密码存储为纯文本,对吗?

如果我在首次登录时向用户提供了他们的设置dB密码,以便他们将其存储在客户端应用程序中,并将其与Auth数据一起传递到标头中怎么办?

我使用基本身份验证和SSL。

这样,在每个API调用中,我不仅会验证用户身份,还会验证他们是否具有正确的dB密码?

这样,我可以将散乱的dB密码与guid一起存储在共享的dB中,然后进行API调用的用户将以纯文本形式提供本地存储的dB密码,API将对其进行散列并与共享的凭据表中存储的散列密码进行比较,并且如果两个对应,API调用将使用表中的dB凭据+用户在标头中发送的密码来提供服务。

这有意义吗?

或者用户可以在服务URL中传递数据库密码?

我无法将所有用户数据保留在samendb中。用户不会很多,但是我想给他们一个共享的客户端应用程序,该应用程序将通过单个API与共享数据库中的共享用户凭据表进行连接,但是每个API调用都将重定向到不同的数据库。

0 个答案:

没有答案