【问题标题】:Microsoft Graph Authentication - Delegated permissionMicrosoft Graph 身份验证 - 委派权限
【发布时间】:2017-08-22 17:44:16
【问题描述】:

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

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

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

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

谢谢!

【问题讨论】:

  • 你的目标是什么?您是否可以让用户使用网页登录一次,只要他们不需要再次登录一年?
  • 最好不要,但如果没有其他选择,那我也可以接受。
  • 您将得到与在您也打开的this 线程中所做的相同的答案。这里的解决方案是,如果您想跳过登录页面,请使用“资源所有者密码凭据流程”,否则,如果您正常获取第一个令牌,则可以使用Refresh Tokens。这里没有人会为您编写资源所有者密码凭证流程的 Python 示例。你需要自己做。
  • @ShawnTabrizi 我不是在找人为我写代码。我只是在寻找方向。感谢您的意见。
  • 这里有一些提示。 1234

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


【解决方案1】:

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

现在,您可以将用户的凭据与 Resource Owner Credentials Flow 一起使用,这只是将用户名/密码发布到 Azure AD 并取回令牌。不推荐使用此路径,因为它很脆弱(例如,MFA 不起作用)并且需要您的应用来管理用户的凭据。

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

要获得这方面的帮助,Azure AD 有一个 ADAL4j library 可供您使用。我还为使用 3rd 方库的 Azure AD v2.0 端点(Microsoft 帐户 + Azure AD 帐户)编写了一个小的 Spring MVC Java code sample

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2022-08-23
    • 2017-09-20
    • 2021-04-12
    • 1970-01-01
    • 2021-03-31
    • 2018-12-02
    • 1970-01-01
    相关资源
    最近更新 更多