Java 使用OAuth2.0客户端凭据验证Azure日志分析Api
我正在尝试访问在Azure Active Directory(AAD)中注册的Azure应用程序。我使用的是OAuth2.O客户端凭据协议() 使用Rest客户端(邮递员),我能够连接。但是我需要在我的Java应用程序中做同样的事情 连接有两个步骤Java 使用OAuth2.0客户端凭据验证Azure日志分析Api,java,oauth-2.0,azure-active-directory,azure-log-analytics,Java,Oauth 2.0,Azure Active Directory,Azure Log Analytics,我正在尝试访问在Azure Active Directory(AAD)中注册的Azure应用程序。我使用的是OAuth2.O客户端凭据协议() 使用Rest客户端(邮递员),我能够连接。但是我需要在我的Java应用程序中做同样的事情 连接有两个步骤 获取访问令牌 POST https://login.microsoftonline.com/YOUR_AAD_TENANT/oauth2/token Content-Type: application/x-www-form-urlencod
POST https://login.microsoftonline.com/YOUR_AAD_TENANT/oauth2/token
Content-Type: application/x-www-form-urlencoded
grant_type=client_credentials
&client_id=YOUR_CLIENT_ID
&redirect_uri=YOUR_REDIRECT_URI
&resource=https://management.azure.com/
&client_secret=YOUR_CLIENT_SECRET
POST https://api.loganalytics.io/v1/workspaces/8fXXXXX-0a84-XXX-XXX- c1a5XXXXXX/query?timespan=P1D
Authorization: Bearer [access_token]
{
"query": "AzureActivity | limit 10"
}
但是他们不使用租户id和授权类型,不使用
客户端\u凭据
尝试下面的代码示例,使用authResult.getAccessToken()
来获取访问令牌,它应该可以工作
import com.microsoft.aad.adal4j.AuthenticationContext;
import com.microsoft.aad.adal4j.AuthenticationResult;
import com.microsoft.aad.adal4j.ClientCredential; // for service principal
import java.util.concurrent.ExecutionException;
import java.util.concurrent.ExecutorService;
import java.util.concurrent.Executors;
import java.util.concurrent.Future;
// Account specific values
String tenantId = <your tenant id>
String clientId = <your client id>
String password = <your password>
// use adal to Authenticate
AuthenticationContext authContext = null;
AuthenticationResult authResult = null;
ExecutorService service = null;
try {
service = Executors.newFixedThreadPool(1);
String url = "https://login.microsoftonline.com/" + tenantId + "/oauth2/authorize";
authContext = new AuthenticationContext(url,
false,
service);
ClientCredential clientCred = new ClientCredential(clientId, password);
Future<AuthenticationResult> future = authContext.acquireToken(
"https://management.azure.com/",
clientCred,
null);
authResult = future.get();
} catch (Exception ex) {
// handle exception as needed
} finally {
service.shutdown();
}
import com.microsoft.aad.adal4j.AuthenticationContext;
导入com.microsoft.aad.adal4j.AuthenticationResult;
导入com.microsoft.aad.adal4j.ClientCredential;//服务负责人
导入java.util.concurrent.ExecutionException;
导入java.util.concurrent.ExecutorService;
导入java.util.concurrent.Executors;
导入java.util.concurrent.Future;
//帐户特定值
字符串tenantId=
字符串clientId=
字符串密码=
//使用adal进行身份验证
AuthenticationContext authContext=null;
AuthenticationResult authResult=null;
ExecutorService=null;
试一试{
服务=Executors.newFixedThreadPool(1);
字符串url=”https://login.microsoftonline.com/“+tenantId+”/oauth2/authorize”;
authContext=新的AuthenticationContext(url,
假,,
服务);
ClientCredential clientCred=新的ClientCredential(clientId,密码);
未来