Ash*_*hok 1 azure azure-active-directory
我使用下面的代码生成访问令牌,以使用 AAD 身份验证将我的应用程序代码连接到 Azure SQL。我需要找出这个令牌的到期时间
为了找到过期时间,我尝试了两种方法:
1) 创建一个连接到 Azure SQL 的控制台应用程序并使用 AAD 身份验证执行一些数据操作。连续循环运行此应用程序一个多小时。这里发现令牌在 1 小时后过期
2)创建一个Web应用程序并托管在iisexpress中。在 Web 应用程序中,编写与控制台应用程序中相同的数据访问代码。在一个多小时内多次循环调用Web App url。这里令牌也将在大约一个小时后过期
3) 与第 2 点相同,不同之处在于 Web 应用程序托管在 Azure 中并启用了托管标识。这里令牌在 1 小时后并未过期。
因此,令牌到期时间与进行调用的环境相关联。我需要找出不同场景下令牌的确切到期时间。我找不到任何文档。我发现的只是令牌将缓存在内存中,并在过期时更新。
var provider = new AzureServiceTokenProvider();
string token = provider.GetAccessTokenAsync("https://database.windows.net/").Result;
SqlConnection con = new SqlConnection("connstring");
con.AccessToken = token;
Run Code Online (Sandbox Code Playgroud)
托管身份访问令牌将在 24 小时后过期。
目前,通过应用程序身份验证库获取的令牌会在距离过期不到 5 分钟时刷新。因此,在默认情况下,它会将令牌缓存 23 小时 55 分钟。
您应始终缓存令牌,直到剩余时间少于 5 分钟,因为托管身份端点本身会缓存令牌,直到该时间为止。如果您在剩余时间超过 5 分钟时尝试获取新令牌,您将只会得到相同的令牌。
| 归档时间: |
|
| 查看次数: |
6249 次 |
| 最近记录: |