Microsoft Graph Authentication - 委派权限

时间:2017-08-22 17:44:16

标签: java azure-active-directory microsoft-graph azure-authentication

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

我还尝试使用Get access on behalf of a user方法,但这需要我的用户通过网页登录,在我的方案中不需要

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

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

谢谢!

1 个答案:

答案 0 :(得分:1)

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

现在,您可以使用Resource Owner Credentials Flow的用户信用卡,只需将用户名/密码发布到Azure AD并获取令牌即可。建议不要使用此路径,因为它很脆弱(例如,MFA无效)并要求您的应用管理用户的凭据。

您最好的选择是为您的用户创建某种登录体验,以便他们登录并同意您的应用程序。 Azure AD中的刷新令牌具有lifetime of until-revoked意味着它们可以持续长达一年甚至更长时间。您遇到的瓶颈是最终用户的密码过期,这会导致他们需要再次登录。

有关此方面的一些帮助,Azure AD可以使用ADAL4j library。我还为使用第三方库的Azure AD v2.0端点(Microsoft帐户+ Azure AD帐户)编写了一个小Spring MVC Java code sample