登录 Webtest Oauth2

Sign in Webtest Oauth2

使用完整的 VS Enterprise 对我们的 WebApplication 进行一些负载测试,我正在努力创建一个有效的 Web 测试。 我们测试的站点是一个带有 AAD 身份验证前端的 Azure WebApp/API。失败的是作为测试用户的身份验证。使用 VS 或 fiddler 录制时,我无法再次播放测试。我认为这是一个 credentials/token 问题...

由于我们的应用不是原生应用,因此我无法获得特定用户凭据的令牌。 (我得到一个已知的异常) 我已经通过使用下面的代码创建插件及其 PreWebtest 方法成功获得了 Bearer 令牌,但是这是在应用程序而不是特定用户级别。

private string GetAdToken(string inClientId, string inAppKey, string 
inAadInstance, string inTenant, string inToDoResourceId)
{
// inToDoResourceId = https://graph.microsoft.com
var myCredential = new ClientCredential(inClientId, inAppKey);
string myAuthority = string.Format(CultureInfo.InvariantCulture, 
inAadInstance, inTenant);
var myAuthContext = new AuthenticationContext(myAuthority);
Task<AuthenticationResult> myResults = 
myAuthContext.AcquireTokenAsync(inToDoResourceId, myCredential);
return myResults.Result.AccessToken;
}

我如何针对特定的 AAD 测试用户身份实现自动化(通过 Web 测试)以允许进一步测试我们的 Web 应用程序的自动化? 提前致谢,

感谢您的回答。我找到了解决问题的方法: VS webtest 工具中有一个 "Set Credentials" 按钮,您可以在其中添加凭据。当我运行再次测试时,测试成功登录到我的webapp。

@GuillaumeLaHaye,是的,我知道我的 AcquireTokenAsync() 方法不是特定于用户的,但是当我使用带有 UserCredential 的方法时,我遇到了这个异常:请求正文必须包含以下参数:'client_secret or client_assertion' .

因为它是 WebbApp/API 而不是本机应用程序(在 Azure 门户中配置,参见 ADAL: The request body must contain the following parameter: client_secret

@AdrianHHH,在 preWebtest 方法(运行 每次测试之前)的 pugin 中使用我的网络应用程序的 clientId、clientSecret、tenantId、AadInstance 调用了获取广告令牌(我在 azure 上找到了它们门户网站)...从这个 Oauth 2.0 流程中,我相信我想获得授权代码或访问令牌,但因为我是网络测试和授权流程的新手,所以我真的不知道我得到了哪个令牌,也不知道如何获得使用它...

Oauth2.0 flow