gpt4 book ai didi

asp.net - 成员身份不适用于 Azure SQL 数据库级防火墙

转载 作者:行者123 更新时间:2023-12-02 04:51:02 26 4
gpt4 key购买 nike

我们有一个 Azure 云应用程序,它将用户登录(成员(member)资格)信息存储到 Azure SQL 数据库中。我们有该数据库的多个版本,一种用于生产,一种用于开发。我们希望我们的开发数据库向全世界开放,并且生产仅限于 Azure 云应用程序。虽然数据库向全世界开放,但一切都运行良好。但是,在我修改 Azure SQL 中的服务器级防火墙规则以限制允许的 IP(不包括我的家庭计算机的 IP)并添加允许家庭计算机的 IP 的数据库级规则后,成员资格停止工作。现在,我可以使用 Microsoft SQL Management Studio 在家中访问数据库,甚至可以使用 Visual-Studio Server Explorer(使用 web.api 中的 connectionString)连接到该数据库。但是,成员(member)资格不再允许从家里连接到数据库。Membership.GetUser() 返回:

{System.Data.SqlClient.SqlException (0x80131904): Cannot open server 'XXXXXX' requested by the login. Client with IP address 'XXX.XXX.59.158' is not allowed to access the server. To enable access, use the Windows Azure Management Portal or run sp_set_firewall_rule on the master database to create a firewall rule for this IP address or address range. It may take up to five minutes for this change to take effect. Login failed for user 'visualbee'. This session has been assigned a tracing ID of '23e9447b-f169-49ab-88df-305172323803'. Provide this tracing ID to customer support when you need assistance.

web.config中定义的数据库连接字符串是:

<add name="usersDB" connectionString="data source=XXXX.database.windows.net;Initial Catalog=XXX.YYY.UsersDatabase;User ID=uuu@gggg;Password=pppppp;Encrypt=true;Trusted_Connection=false;MultipleActiveResultSets=True" providerName="System.Data.SqlClient" />

web.config 中的成员资格和 RoleManager 定义:

<membership defaultProvider="DefaultMembershipProvider" hashAlgorithmType="SHA1">
<providers>
<clear />
<add name="DefaultMembershipProvider" type="System.Web.Providers.DefaultMembershipProvider, System.Web.Providers, Version=1.0.0.0, Culture=neutral, PublicKeyToken=XXbf3856ad364eXX" connectionStringName="usersDB" enablePasswordRetrieval="false" enablePasswordReset="true" requiresQuestionAndAnswer="false" requiresUniqueEmail="false" maxInvalidPasswordAttempts="2147483647" minRequiredPasswordLength="6" minRequiredNonalphanumericCharacters="0" passwordAttemptWindow="10" applicationName="/" />
</providers>
</membership>

<roleManager enabled="false" defaultProvider="DefaultRoleProvider">
<providers>
<clear />
<add name="AspNetWindowsTokenRoleProvider" type="System.Web.Security.WindowsTokenRoleProvider" applicationName="/" />
<add name="DefaultRoleProvider" type="System.Web.Providers.DefaultRoleProvider, System.Web.Providers, Version=1.0.0.0, Culture=neutral, PublicKeyToken=XXbf3856ad364eXX" connectionStringName="usersDB" applicationName="/" />
</providers>
</roleManager>

数据库级防火墙规则:(如您所见,它不排除任何人) Database-level firewall rule

最佳答案

经过尝试,终于找到了解决办法。我向“系统数据库”数据库添加了数据库级规则:

exec sp_set_database_firewall_rule N'AllowAll','0.0.0.0','255.255.255.255'

现在我可以使用成员(member)资格连接到用户数据库。具有适当数据库级防火墙规则的其他数据库也可以公开访问。其余数据库返回“IP 地址为 XXX 的客户端不允许访问服务器”。

关于asp.net - 成员身份不适用于 Azure SQL 数据库级防火墙,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28415873/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com