微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

java – 使用用户名和密码访问Azure Active Directory

我有一个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,则此auth方法会失败.

维托里奥在这里有一篇很好的博客文章

http://www.cloudidentity.com/blog/2014/07/08/using-adal-net-to-authenticate-users-via-usernamepassword/

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。

相关推荐