我正在尝试功能测试一些需要进行身份验证的API(OAuth 2.0),并在JMeter中进行模拟。
我正在尝试验证Azure云的OAuth服务。有没有人能够成功创建JMeter HTTP请求以对OAuth 2.0进行身份验证?
答案 0 :(得分:6)
基本上,您需要添加HTTP Header Manager以发送Authorization
标头,其值为Bearer ${ACCESS_TOKEN}
,以便进行经过身份验证的OAuth API调用。
访问令牌可以通过两种主要方式获得:
在测试中实施OAuth2流程,即:
关于实施选项2 - 它将需要3个独立的JMeter采样器(或者您可以通过JSR223 Sampler以编程方式获取访问令牌)
参考文献:
答案 1 :(得分:0)
作为API测试自动化的一部分,我们确实创建了本机客户端ID,将所需的资源分配给了本机客户端。
所有您需要的adal4j-1.6.X.jar
public static AuthenticationResult getAuthToken(String username, String password,
String clientId, String authority, String tenant, String urii) throws Throwable {
AuthenticationContext context = null;
AuthenticationResult result = null;
ExecutorService service = null;
crypToUtil td= new crypToUtil();
crypToUtil cryptoUtil = new crypToUtil();
password = cryptoUtil.decrypt(password);
try {
service = Executors.newFixedThreadPool(1);
context = new AuthenticationContext(authority + tenant + "/", true,service);
Future<AuthenticationResult> future = context.acquireToken(urii, clientId, username, password,null);
result = future.get();
} catch (ExecutionException | MalformedURLException e) {
throw e.getCause();
} finally {
service.shutdown();
}
if (result == null) {
throw new ServiceUnavailableException("authentication result was null, could be your input data were wrong ...");
}
return result;
}