首页 > 解决方案 > 将 .NET Core 桌面应用程序连接到 Azure SQL Server 的最佳方式是什么

问题描述

我正在.NET Core 中构建一个桌面应用程序。我将把这个应用程序连接到 Azure SQL 服务器。两者之间传递的信息非常敏感。对数据库的每个查询都可以返回几千字节到 4 MB 的响应。在 SQL 服务器上执行查询时,我想知道发出请求的用户的登录 \ 身份,以便我只能返回允许该用户查看的数据。

我正在尝试在将我的桌面应用程序直接连接到 Azure SQL 数据库还是创建 Web API 之间做出决定。

我的问题是:

  1. 您会推荐哪个,直接连接到 Azure SQL 数据库或使用连接到服务器上数据库的 Web API?
  2. 我知道在我的应用程序中将用户名和密码硬编码到 SQL 服务器是不好的做法。如果我直接连接到 SQL 服务器,我是否必须在 SQL 服务器上为每个用户创建一个帐户,并在用户登录时询问他们的凭据,然后将其传递给 SQL 服务器?
  3. 如果我使用 Web API,如何获取用户凭据?同样,我是否必须为每个用户设置单独的帐户?我会使用 OAuth 或其他方法来执行此操作吗?https://docs.microsoft.com/en-us/aspnet/web-api/overview/security/individual-accounts-in-web-api
  4. 有人会支持使用 WCF 数据服务吗?

标签: c#sql-serverazuresecurityasp.net-web-api

解决方案


  1. 不,如果您公开您的 SQL 数据库,这是一个潜在的安全风险。ASP.NET Core有一个身份提供程序,您可以决定要将用户存储在数据库中的天气,也可以使用 Facebook、Google 或 Microsoft 等外部登录提供程序。

  2. 如果要执行此操作,则应使用Azure Active Directory 身份验证,您可以使用它来对应用程序和 Azure SQL 数据库的用户进行身份验证。但是,如果您为您的公司做 B2B 应用程序或内部应用程序,这可以工作。如果您想在 Internet 上提供一个公共应用程序,并让每个人都注册,您应该使用第一个解决方案。

  3. 它在ASP.NET Core 的身份提供程序一文中进行了描述。

  4. 你不能,如果你检查.NET Core 和 .NET Framework 之间的选择文章,它说“WCF 服务器实现当前仅在 .NET Framework 中可用”只有客户端在 .NET Core 中实现。


推荐阅读