2016-04-26 177 views
1

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

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

我也看过了多租户应用程序管理员/用户同意书及其相关示例Integrating applications with azure active directory。但是,管理员同意的问题是它使目录中的所有用户都可以访问该目录。

是否有任何其他方式可以提供某种类型的注册链接,让全局管理员用户进行身份验证并同意允许某些访问或刷新令牌可以持久保留供后端用户使用,终端服务?

回答

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(); 

... 
相关问题