当前位置: 首页 > 知识库问答 >
问题:

Microsoft图形身份验证-委派权限

常彭薄
2023-03-14

我能够在没有用户的情况下使用Get access从Microsoft Graph访问资源。但是,这个方法不允许我访问需要委派权限的资源。

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

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

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

谢谢

共有1个答案

张博涛
2023-03-14

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

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

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

为了获得一些帮助,Azure AD有一个ADAL4j库,您可以使用它。我还为使用第三方库的Azure AD v2.0endpoint(Microsoft Accounts Azure AD Accounts)编写了一个小型Spring MVC Java代码示例。

 类似资料:
  • 我正在尝试在Spring身份验证服务器(Spring Security)中配置多个身份验证提供程序(主要和次要) 根据“身份验证”方法留档: 返回:包含凭据的完全经过身份验证的对象。如果AuthenticationProvider无法支持对传递的身份验证对象的身份验证,则可能返回null。在这种情况下,将尝试下一个支持提供的身份验证类的AuthenticationProvider。 如果身份验证失

  • OAuth术语已经困扰我很久了。OAuth授权是像一些人建议的那样,还是认证? 如果我错了,请纠正我,但我一直认为授权是允许某人访问某个资源的行为,而OAuth似乎没有任何实际允许用户访问给定资源的实现。OAuth实现所讨论的都是为用户提供一个令牌(签名的,有时是加密的)。然后,每次调用都会将该令牌传递到后端服务endpoint,在后端服务endpoint上检查该令牌的有效性,这也不是OAuth的

  • 问题内容: 我有一个Java Web应用程序,可以在Windows Active Directory环境中对客户端进行SPNEGO身份验证。为了验证用户身份,我们使用了旧的SPNEGO SourceForge项目中的代码。 身份验证效果很好,但是我们还需要使用受约束的委派将用户凭据委派给后端服务(Exchange EWS)。在我们的广告中进行配置时,看起来差别很小,但不是。请参阅: AD委托设置

  • 我的基本要求是公开一些REST资源的Web API。访问任何资源都需要身份验证,我希望这通过Microsoft帐户进行。这是一个用于编程访问的Web api。 我沿着这条路开始:https://docs.microsoft.com/en-us/aspnet/core/security/authentication/social/microsoft-logins?view=aspnetcore-2.

  • 我有一个已经完成的j2ee(jsf、cdi、jpa)应用程序,它完美地使用了ApacheShiro,它工作得非常好,我喜欢Shiro注释(hasRole、hasPermission等)。 现在,该项目还必须能够通过SiteMinder进行身份验证,我的问题是: 我如何设置一个领域来处理SiteMinder身份验证而不丢失Shiro授权(似乎SiteMinder会在HTTP头中给我用户名和Rolen

  • 身份验证 PDF版下载 企业应用中的URL链接可以通过OAuth2.0验证接口来获取员工的身份信息。 通过此接口获取员工身份会有一定的时间开销。对于频繁获取员工身份的场景,建议采用如下方案: 企业应用中的URL链接直接填写企业自己的页面地址; 员工跳转到企业页面时,企业校验是否有代表员工身份的cookie,此cookie由企业生成; 如果没有获取到cookie,重定向到OAuth验证链接,获取员工