3

我可以使用Get access without user从 Microsoft Graph 访问资源。但是,此方法不允许我访问需要委派权限的资源。

我还尝试使用代表用户方法获取访问权限,但它需要我的用户通过网页登录,这在我的场景中是不需要的。

是否可以生成一个具有较长生命周期(可能超过一年)的授权代码并使用该代码来请求访问令牌,然后可以使用该令牌来获取需要委托权限的资源?

注意:我知道生成一个生命周期这么长的授权码不是一个好主意,但是这个代码将被后端程序用来访问资源而不是用户。所以我不希望用户登录页面弹出。希望在 Java 中实现这一点。

谢谢!

4

1 回答 1

2

为了使用委派权限,最终用户需要通过 OAuth2.0 流程以交互方式登录。

现在,您可以将用户的凭据与资源所有者凭据流一起使用,该流只是将用户名/密码发布到 Azure AD 并取回令牌。不建议使用此路径,因为它很脆弱(例如,MFA 将不起作用)并且需要您的应用程序来管理用户的凭据。

您最好的选择是为您的用户创建某种登录体验,允许他们登录并同意您的应用程序。Azure AD 中的刷新令牌具有直到撤销的生命周期,这意味着它们可以持续一年甚至更长。您将遇到的瓶颈是最终用户的密码过期,这将导致他们需要再次登录。

如需这方面的帮助,Azure AD 有一个可供您使用的ADAL4j 库。我还为使用 3rd 方库的 Azure AD v2.0 端点(Microsoft 帐户 + Azure AD 帐户)编写了一个小型Spring MVC Java 代码示例。

于 2017-08-22T18:36:06.117 回答