Я пытаюсь получить доступ к управляемым устройствам для определенного пользователя. Я написал код, который использует веб-приложение для получения кода аутентификации. Я могу видеть всех пользователей, а также конкретного пользователя. Но когда я пытаюсь получить доступ к управляемым устройствам для пользователя, я получаю 401 несанкционированную ошибку. Я проверил, что все разрешения предоставлены веб-приложению, созданному на портале Azure для Microsoft Graph. Вот мой код: -
try {
String access_token = getAccessToken();
String url_str = "https://graph.microsoft.com/v1.0/users/{user name here}/managedDevices/";
url = new URL(url_str);
con = ( HttpURLConnection )url.openConnection();
con.setDoInput(true);
con.setDoOutput(true);
con.setUseCaches(false);
con.setRequestMethod("GET");
con.setRequestProperty("Authorization", access_token);
con.setRequestProperty("Accept","application/json");
con.connect();
br = new BufferedReader(new InputStreamReader( con.getInputStream() ));
String str = null;
String line;
while((line = br.readLine()) != null) {
str += line;
}
System.out.println(str);
} catch (Exception e) {
e.printStackTrace();
}
Код получения токена: -
private String getAccessToken() {
String accessToken = "";
try {
ExecutorService service = Executors.newFixedThreadPool(1);
String authorization_url = "https://login.microsoftonline.com/" + Authentication_Constants.TENANT + "/oauth2/authorize/";
AuthenticationContext authContext = new AuthenticationContext(authorization_url, false, service);
ClientCredential clientCred = new ClientCredential(Authentication_Constants.CLIENTID, Authentication_Constants.SECRET);
Future<AuthenticationResult> future = authContext.acquireToken(Authentication_Constants.RESOURCE, clientCred, null);
AuthenticationResult authResult = future.get();
accessToken = authResult.getAccessToken();
} catch (Exception ex) {
System.out.println(ex.getLocalizedMessage());
}
return accessToken;
}
Есть ли что-то, что мне не хватает? Спасибо!