如何生成 accessToken 以与 Microsoft 信息保护 Java SDK 一起使用

问题描述 投票:0回答:1

我正在使用适用于 Java 的 Microsoft 信息保护 SDK 包装器。 我使用用户名密码流程来获取用户的令牌,并且它与 AuthDelegateImpl 的实现(实现 IAuthDelegate)配合良好。

但是,我想提前生成令牌(使用 SSO/Oauth/etc,而不是通过用户名/密码流),以供 com.microsoft.informationprotection.file.FileEngineSettings 对象用于信息保护操作。

使用为 Graph API 请求生成的令牌似乎不起作用,因为 SDK 拒绝了它。 我想找出生成令牌的正确方法,因为图形 api 令牌(我已经可用)被拒绝。

azure-active-directory azure-ad-msal microsoft-information-protection
1个回答
0
投票

注意:要生成访问令牌以访问 Microsoft 信息保护,您需要向 Microsoft Entra ID 应用程序授予 Azure Rights Management Service API 权限。

  • Graph Api 令牌将不允许您访问 Azure Rights Management Service API,因为它适用于 Microsoft Graph API。
  • 通过使用 Microsoft Graph API 访问令牌,您只能调用 Microsoft Graph API。
  • 您可以通过授权码或交互方式获取令牌。

因此,根据您的要求授予API权限,如下所示:

enter image description here

现在通过在代码中将作用域传递为

https://aadrm.com/.default
来生成访问令牌。

例如,我使用以下参数通过 Postman 生成了访问令牌

https://login.microsoftonline.com/TenantID/oauth2/v2.0/token

client_id:ClientID
scope:https://aadrm.com/.default
grant_type:authorization_code
code:code
redirect_uri:https://jwt.io
client_secret:ClientSecret

enter image description here

enter image description here

通过使用上述访问令牌,您可以调用Microsoft信息保护API。

您可以使用以下代码来生成令牌:

PublicClientApplication pca = new PublicClientApplication.Builder(APP_ID)
        .authority(AUTHORITY)
        .build();

IAuthenticationResult result = pca.acquireToken(AuthorizationCodeParameters
        .builder(authCode, new URI(REPLY_URL))
        .scopes(scope)
        .build())
        .get();

参考资料:

在 MSAL Java 中以交互方式获取令牌 - 适用于 Java 的 Microsoft 身份验证库 |微软

所需的 API 权限 - Microsoft 信息保护 SDK |微软

© www.soinside.com 2019 - 2024. All rights reserved.