使用Azure AD认证时,SqlClient如何获取Azure SQL Server的scope?
SqlClient获取Azure SQL Server实例Scope的机制
核心结论
SqlClient不需要开发者手动传入Azure SQL的OAuth 2.0 Scope,它会通过Federated Authentication Info机制自动获取对应实例的正确Scope。
具体工作流程
- 初始请求触发:当SqlClient使用Azure AD认证方式发起数据库连接时,会先向目标SQL Server实例发送一个包含Azure AD认证标识的初始请求。
- 获取Federated Authentication Info:SQL Server实例会返回包含自身对应Azure AD资源URI的Federated Authentication Info数据。这个资源URI是Azure AD中标识该SQL实例的唯一标识符,通常格式为
https://<sql-server-name>.database.windows.net或通用的https://database.windows.net。 - 构造Scope并请求令牌:SqlClient将获取到的资源URI拼接成标准的OAuth 2.0 Scope格式(
{resourceURI}/.default),然后用这个Scope向Azure AD请求访问令牌,完成后续的认证流程。
为什么不需要手动传入Scope?
Azure SQL的OAuth授权Scope遵循固定的.default模式,且每个SQL实例对应的资源URI可能存在差异(比如自定义域名的实例)。SqlClient通过动态获取Federated Authentication Info,确保始终使用与目标实例匹配的正确Scope,避免了硬编码或手动配置的错误。
不同认证流的参数要求
不管使用哪种Azure AD认证流(服务主体、用户名密码、托管标识等),开发者只需提供对应流所需的参数(比如服务主体流的Client ID、Client Secret),无需额外指定Scope参数,SqlClient会自动处理Scope的获取和令牌请求。
内容的提问来源于stack exchange,提问作者A. Trivedi
相关产品推荐
相关产品推荐

