Azure active directory 如何使用用户委托给应用程序的“脱机访问”权限?

Azure active directory 如何使用用户委托给应用程序的“脱机访问”权限?,azure-active-directory,microsoft-graph-api,Azure Active Directory,Microsoft Graph Api,我在Azure AD中安装了一个应用程序,并授予它用户访问用户资源的授权 在授权请求中,我还添加了范围,根据文档,该范围允许应用程序与用户资源交互(在授予的权限范围内),而无需用户权限 我在应用程序中添加了一个client_secret,并尝试访问Graph API和查询用户的资源。我使用client\u凭证流作为应用程序这样做。此操作失败,返回未经授权的响应 我进一步研究发现,使用客户端凭据流时,只有应用程序权限 那么,为什么脱机访问范围?作为应用程序访问时,这是否不起作用?应用程序权限太广,

我在Azure AD中安装了一个应用程序,并授予它用户访问用户资源的授权

在授权请求中,我还添加了范围,根据文档,该范围允许应用程序与用户资源交互(在授予的权限范围内),而无需用户权限

我在应用程序中添加了一个client_secret,并尝试访问Graph API和查询用户的资源。我使用
client\u凭证
流作为应用程序这样做。此操作失败,返回未经授权的响应

我进一步研究发现,使用客户端凭据流时,只有应用程序权限

那么,为什么脱机访问范围?作为应用程序访问时,这是否不起作用?应用程序权限太广,在我的情况下,IT管理员永远不会授予我这些权限


种类问候

离线访问范围表示您从AAD获得刷新令牌。 您可以使用该刷新令牌在后台工作程序中获取新的访问令牌(和新的刷新令牌),即使用户不再积极使用该应用程序。 您需要在用户登录后将刷新令牌缓存到安全的地方,并使用它来获取令牌和调用所需的API

请记住始终使用从令牌刷新中获得的新令牌替换缓存的刷新令牌。 而且刷新令牌也会过期,因此您应该偶尔使用刷新令牌来获取新的刷新令牌。
它们也可以被完全撤销,在这种情况下,用户必须再次登录以向您的应用程序提供可用的刷新令牌。

谢谢您,我现在觉得这很有意义。在我的例子中,我希望有一个在用户授权权限范围内工作的守护程序应用程序,而不是应用程序权限。看到了,你也很好地问了我这个问题,谢谢。。ROPC并不是真正的建议,但它肯定是绕过应用程序权限不可用的限制的一种方法。当然,所有方法的利弊。与ROPC一起使用的用户不能有MFA,例如:\True。还有人可能会争辩说,ROPC流(虽然不推荐)实际上可能比客户端凭据流更安全。在后者中,需要client_id和client_secret。在ROPC中,还需要用户名和密码。产生更强的
复合
凭证。无论如何,我们都将此用户视为服务主体,并且它的密码比Azure Ad为其应用程序生成的默认客户端机密更复杂。但是,是的,拥有一个未启用MFA的用户会带来风险。