Azure AD Graph API访问,不使用客户端ID和密钥

时间:2016-04-26 20:50:05

标签: azure authentication active-directory azure-ad-graph-api

我有一个需要读取和写入Azure AD的后端服务。通过使用租户信息,客户端ID和密钥(这些值来自Authentication Scenarios for Azure AD | Basics of Registering an Application in Azure AD)进行身份验证,我能够使用图形API进行读写。

使用租户信息,客户端ID和密钥进行身份验证意味着最终用户需要通过手动指定这些值来注册他们的租户,我试图避免这种手动注册步骤,用户需要指定这些值。

我还查看了多租户应用程序管理员/用户同意及其相关样本Integrating applications with azure active directory。但是,管理员同意的问题是它允许目录中的所有用户都可以访问该目录。

还有其他方法我可以提供某种注册链接,让全局管理员用户进行身份验证并同意权限,此时可以保留某种访问或刷新令牌以供后端使用服务?

1 个答案:

答案 0 :(得分:0)

我有相反的问题(见How to use Azure AD Graph API access for service principals?),但可以回答你的问题。守护程序应用程序可以作为单租户或多租户运行,并使用用户/密码身份验证,因此可以限制为该用户的权限/角色。我已经使用相同的应用程序同时使用客户端ID /密码和用户/密码对此进行了测试 - 您只需要为应用程序添加用户/密码案例所需的权限(这似乎不适用于SP的)。

就我而言,我正在使用adal4j,但我确信你可以根据需要进行调整,例如:

final ExecutorService service = Executors.newFixedThreadPool(1);
final AuthenticationContext context = new AuthenticationContext(authority, true, service);
final Future<AuthenticationResult> future = context.acquireToken("https://graph.windows.net", clientID, userName, decryptedPassword, null);
final AuthenticationResult result = future.get();

...
相关问题