Microsoft Graph Authentication - 委派权限

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

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

我也尝试使用Get access on behalf of a user方法,但它需要我的用户通过网页登录,这在我的场景中是不需要的。

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

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

谢谢!

java azure-active-directory microsoft-graph azure-authentication
1个回答
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 Accounts + Azure AD帐户)编写了一个小的Spring MVC Java code sample

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