如何在 JMeter 中进行 OAuth 2.0 身份验证?
How to do a OAuth 2.0 authentication in JMeter?
我正在尝试对一些需要进行身份验证的 API (OAuth 2.0) 进行功能测试,并在 JMeter 中对其进行模拟。
我正在尝试验证 Azure 云的 OAuth 服务。有没有人能够成功创建 JMeter HTTP 请求以针对 OAuth 2.0 进行身份验证?
基本上,您需要添加 HTTP Header Manager 以发送 Authorization
header 和 Bearer ${ACCESS_TOKEN}
的值,以便进行经过身份验证的 OAuth API 调用。
可以通过两种主要方式获取访问令牌:
- 以某种方式获取它(请求它,使用您需要模拟的嗅探器工具和应用程序捕获它等),但请注意 OAuth 访问令牌有 limited life span(默认情况下为 1 小时,这适用也指向第 2 点)
在您的测试中实施 OAuth2 流程,即:
- 身份验证(提供客户端 ID 和租户 ID)
- 授权(使用客户端 ID 和上一步的代码)
- 获取访问令牌(提供上一步的授权代码、第一步的代码和客户端 ID
关于实施选项 2 - 它将需要 3 个单独的 JMeter 采样器(或者您可以通过 JSR223 Sampler 以编程方式获取访问令牌)
参考文献:
作为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;
}
我正在尝试对一些需要进行身份验证的 API (OAuth 2.0) 进行功能测试,并在 JMeter 中对其进行模拟。
我正在尝试验证 Azure 云的 OAuth 服务。有没有人能够成功创建 JMeter HTTP 请求以针对 OAuth 2.0 进行身份验证?
基本上,您需要添加 HTTP Header Manager 以发送 Authorization
header 和 Bearer ${ACCESS_TOKEN}
的值,以便进行经过身份验证的 OAuth API 调用。
可以通过两种主要方式获取访问令牌:
- 以某种方式获取它(请求它,使用您需要模拟的嗅探器工具和应用程序捕获它等),但请注意 OAuth 访问令牌有 limited life span(默认情况下为 1 小时,这适用也指向第 2 点)
在您的测试中实施 OAuth2 流程,即:
- 身份验证(提供客户端 ID 和租户 ID)
- 授权(使用客户端 ID 和上一步的代码)
- 获取访问令牌(提供上一步的授权代码、第一步的代码和客户端 ID
关于实施选项 2 - 它将需要 3 个单独的 JMeter 采样器(或者您可以通过 JSR223 Sampler 以编程方式获取访问令牌)
参考文献:
作为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;
}