Ich habe ein Problem (oder zwei) in Bezug auf den Zugriff auf mein Office 365-Konto über die Microsoft Graph API.Office 365 Zugriff über Graph API
Das erste Problem ist, dass ich ein Java-Programm habe, das versucht, alle Benutzer im Office 365-Abonnement aufzulisten. Ich rufe https://graph.microsoft.com/v1.0/users/
, aber bekomme eine 403 forbidden
zurück.
In der App-Registrierung, habe ich Berechtigungen einschließlich User.Read
, User.ReadBasic.All
, User.ReadWrite
sowohl delegierte als auch App-Berechtigungen hinzugefügt.
Ich habe auch versucht, den Graph Explorer zu verwenden, aber wenn ich mein Konto benutze, verwendet es immer noch den eingebauten Graphenbenutzer und zeigt nicht meine Anmeldedaten an. Nicht sicher, ob diese verwandt sind. Hier
ist Code-Schnipsel, die
AuthenticationResult result = getAccessTokenFromUserCredentials(RESOURCE_GRAPH, ID, PASSWORD);
URL url = new URL("https://graph.microsoft.com/v1.0/users/") ;
HttpURLConnection conn = (HttpURLConnection) url.openConnection();
conn.setRequestMethod("GET");
conn.setRequestProperty("Accept", "application/json");
conn.setRequestProperty("Authorization", "Bearer "+result.getAccessToken());
if (conn.getResponseCode() != 200) {
throw new RuntimeException("Failed : HTTP error code : "
+ conn.getResponseCode());
}
in einem 403 Ergebnisse Und hier ist die Methode, die das Token
private static AuthenticationResult getAccessTokenFromUserCredentials(String resource,
String username, String password) throws Exception {
AuthenticationContext context;
AuthenticationResult result = null;
ExecutorService service = null;
try {
service = Executors.newFixedThreadPool(1);
context = new AuthenticationContext(AUTHORITY, false, service);
Future<AuthenticationResult> future = context.acquireToken(
resource, CLIENT_ID, username, password,
null);
result = future.get();
} finally {
service.shutdown();
}
if (result == null) {
throw new ServiceUnavailableException(
"authentication result was null");
}
return result;
}
Wie authentifizieren Sie den Benutzer, um das übergebene Token in '/ users' zu bekommen? –
Mit Codebeispiel aktualisiert. Wenn ich https://graph.microsoft.com/v1.0/me/ anrufe, bekomme ich die JSON-Zeichenfolge zurück, die meinen Benutzer darstellt. Aber wenn ich mit/users/rufe, bekomme ich die 403. Ich kann auch auf den Sharepoint-Endpunkt zugreifen und Website-Daten usw. erhalten. – Gary
User.ReadBasic.Alle benötigen Admin-Zustimmung, haben Sie versucht, Admin-Zustimmung zu tun? Wo registrierst du die App im azurblauen Portal? –