0

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

由于我们的应用程序不是本机应用程序,因此我无法获取特定用户凭据的令牌。(我遇到了一个已知异常)我已经通过使用下面的代码创建插件及其 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 应用程序进一步测试自动化?提前致谢,

4

1 回答 1

0

感谢您的回答。我找到了解决问题的方法:VS webtest 工具中有一个“设置凭据”按钮,您可以在其中添加凭据。当我再次运行测试时,测试成功登录到我的 web 应用程序。

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

因为它是 WebbApp/API 而不是本机应用程序(在 Azure 门户中配置,参见ADAL:请求正文必须包含以下参数:client_secret

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

Oauth2.0流程

于 2018-06-21T23:55:37.093 回答