我有一个azure订阅,一个具有管理员权限的AD实例。是否有可能通过Graph API访问AD并获得所有用户的列表?
注意:我已经研究并发现了这个示例:https://github.com/AzureADSamples/WebApp-GraphAPI-Java
但这需要我创建一个Java Web-App,将其添加到azure上的应用程序,获得客户端ID和秘密,然后进行身份验证。
是否没有办法通过使用ADAl4J库编写一个简单的命令行java程序并提供AD用户名和密码作为凭据来进行身份验证(获得访问令牌)?
例如:
public static void main(String srgs[])
{
String authority = "https://login.windows.net/";
String tenant = "mytenant.onmicrosoft.com" ;
AuthenticationContext context = null;
AuthenticationResult result = null;
ExecutorService service = null;
try {
service = Executors.newFixedThreadPool(1);
context = new AuthenticationContext(authority + tenant + "/", true,
service);
Future<AuthenticationResult> future = context.acquireToken(
"https://graph.windows.net", new ClientCredential("AD-USERNAME",
"AD-PASSWORD"), null);
result = future.get();
} catch (Exception e) {
e.getCause();
} finally {
service.shutdown();
}
}
这确实是可能的。AzureAD支持OAuth资源所有者密码凭据授予。ADAL SDK最近增加了对它的支持(https://www.nuget.org/packages/Microsoft.IdentityModel.Clients.ActiveDirectory/2.8.10804.1442-rc)。
但是请注意,当为帐户启用多因素身份验证时,或者如果将帐户配置为对非ADFS的IdP进行联合身份验证时,此身份验证方法将失败。
Vittorio在这里有一篇很好的博客文章:
http://www.cloudidentity.com/blog/2014/07/08/using-adal-net-to-authenticate-users-via-usernamepassword/