我正在.NET Core中构建一个桌面应用程序。我将此应用程序连接到Azure SQL服务器。将在两者之间传递的信息非常敏感。对数据库的每个查询都可以返回几千字节到4MB的响应。在SQL服务器上执行查询时,我想知道发出请求的用户的登录\身份,这样我就只能返回该用户可以看到的数据。
我正在尝试决定是将我的桌面应用程序直接连接到Azure SQL数据库,还是创建Web API。
我的问题是:
- 您建议直接连接到Azure SQL数据库还是使用连接到服务器上的数据库的Web API
- 我知道在我的应用程序中硬编码SQL服务器的用户名和密码是不好的做法。如果我直接连接到SQL server,我是否必须在SQL server上为每个用户创建一个帐户,并在用户登录时询问他们的凭据,然后将其传递给SQL server
- 如果我使用Web API,如何获取用户凭据?同样,我是否必须为每个用户设置单独的帐户?我会使用OAuth或其他方法吗?https://learn.microsoft.com/en-us/aspnet/web-api/overview/security/individual-accounts-in-web-api
- 有人会赞成使用WCF数据服务吗
-
不,如果您公开您的SQL数据库,这是一个潜在的安全风险。ASP.NET Core有一个身份提供程序,您可以决定是否将用户存储在数据库中,也可以使用Facebook、Google或Microsoft等外部登录提供程序。
-
如果你想这样做,你应该使用Azure Active Directory身份验证。你可以使用它为你的应用程序和Azure SQL数据库对用户进行身份验证。但是,如果你做B2B应用程序,或者为你的公司做内部应用程序,这是可行的。如果你想在互联网上有一个公共应用程序,并让每个人都注册,你应该选择第一个解决方案。
-
它在ASP.NET Core的标识提供程序文章中进行了描述。
-
如果您检查"在.NET Core和.NET Framework之间进行选择"一文,它会说"WCF服务器实现当前仅在.NET Framework中可用",则只有客户端在.NET Core中实现。