【问题标题】:Get Azure AD Access token from .Net Standard 2.0 unit test从 .Net Standard 2.0 单元测试获取 Azure AD 访问令牌
【发布时间】:2019-01-27 21:28:19
【问题描述】:
【问题讨论】:
标签:
unit-testing
azure-active-directory
.net-standard-2.0
【解决方案1】:
我在集成测试中使用过类似的东西:
string tokenUrl = _authority + "oauth2/token";
var req = new HttpRequestMessage(HttpMethod.Post, tokenUrl)
{
Content = new FormUrlEncodedContent(new Dictionary<string, string>
{
["grant_type"] = "password",
["client_id"] = settings.ClientId,
["client_secret"] = settings.ClientSecret,
["resource"] = _resourceUri,
["username"] = settings.UserName,
["password"] = settings.Password
})
};
HttpResponseMessage res = await _client.SendAsync(req);
string json = await res.Content.ReadAsStringAsync();
AadTokenResponse tokenResponse = JsonConvert.DeserializeObject<AadTokenResponse>(json);
有一些类级别的字段,例如 AAD 权限、API 资源 URI 和 HttpClient。
因此,它的作用是使用资源所有者密码凭据授予流程获取访问令牌。
这是使用此流程实际上有意义的少数情况之一。
我们在没有登录窗口的情况下在用户上下文中获取访问令牌。
当有更好的东西可用时,不应使用此流程,并且在这种情况下还要求用户没有联合,没有 MFA 等。
您可能希望缓存令牌,这样您就不会从测试中毫无意义地敲击令牌端点。