我正在使用适用于 Java 的 Microsoft 信息保护 SDK 包装器。 我使用用户名密码流程来获取用户的令牌,并且它与 AuthDelegateImpl 的实现(实现 IAuthDelegate)配合良好。
但是,我想提前生成令牌(使用 SSO/Oauth/etc,而不是通过用户名/密码流),以供 com.microsoft.informationprotection.file.FileEngineSettings 对象用于信息保护操作。
使用为 Graph API 请求生成的令牌似乎不起作用,因为 SDK 拒绝了它。 我想找出生成令牌的正确方法,因为图形 api 令牌(我已经可用)被拒绝。
注意:要生成访问令牌以访问 Microsoft 信息保护,您需要向 Microsoft Entra ID 应用程序授予 Azure Rights Management Service API 权限。
因此,根据您的要求授予API权限,如下所示:
现在通过在代码中将作用域传递为
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
通过使用上述访问令牌,您可以调用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();
参考资料: