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

使用Microsoft Graph api的增量OAuth同意

况承福
2023-03-14

我们在Azure AD中有一个应用程序,它使用了Microsoft Graph API。该应用程序正在成功使用4个基本权限:电子邮件,个人资料用户。读取用户。ReadBasic.All

这些权限允许普通用户(非管理员)OAuth 在我们的应用程序中进行身份验证。

我们现在正在为管理员用户构建一个功能,允许他们查看自己的组。组范围需要管理员同意,具体如下:http://graph.microsoft.io/en-us/docs/authorizathtml" target="_blank">ion/permission_scopes

关键是如果我添加Group.Read。Azure AD中委托权限下的所有权限,这会导致普通用户能够登录,并出现可怕的错误“AADSTS90093:由于缺少权限,调用主体无法同意”。

我尝试手动制作明确请求范围的 OAuth 授权 URL,但这也不起作用。这是我使用的示例网址:

https://login.microsoftonline.com/common/oauth2/authorize?response_type=code&redirect_uri=https%3A%2F%2Fl.xxxxxx.com%3A50000%2Fauth%2Fmicrosoft_graph%2Fcallback&client_id=xxxxxx-xxx-xxx-xxx-xxxx&scope=https%3A%2F%2Fgraph.microsoft.com%2Femail%20https%3A%2F%2Fgraph.microsoft.com%2Fprofile%20https%3A%2F%2Fgraph.microsoft.com%2FUser.Read%20https%3A%2F%2Fgraph.microsoft.com%2FUser.ReadBasic.All%20https%3A%2F%2Fgraph.microsoft.com%2FGroup.Read.All

我如何才能要求所有用户的基本权限,但让管理员稍后在应用程序中请求其他权限?

有些资源我已经查看过了,但没有用:

> < Li > < p > http://www . Mike pack dev . com/blog _ posts/2-Dynamically-Requesting-脸书-Permissions-with-OmniAuth

https://azure.microsoft.com/en-us/documentation/samples/active-directory-dotnet-webapp-openidconnect-v2/

使用Omniauth和Rails 3在脸书登录的web和触摸界面之间切换

https://github.com/zquestz/omniauth-google-oauth2/issues/143

https://azure.microsoft.com/en-us/documentation/articles/active-directory-protocols-oauth-code/

https://github.com/Azure/azure-content/blob/master/articles/active-directory/active-directory-devhowto-multi-tenant-overview.md

共有1个答案

金毅
2023-03-14

Azure AD V2.0终结点已经支持增量和动态同意。您可以从此处注册应用以使用Azure AD V2.0身份验证终结点。

我们可以为普通用户和管理员提供两个登录按钮。以下是普通用户使用V2.0endpoint登录的步骤,供您参考:

1 .登录并获取OAuth代码:

GET: https://login.microsoftonline.com/common/oauth2/v2.0/authorize?client_id={clientId}&scope=openid%20https%3A%2F%2Fgraph.microsoft.com%2FMail.ReadWrite%20https%3A%2F%2Fgraph.microsoft.com%2FUser.ReadBasic.All%20https%3A%2F%2Fgraph.microsoft.com%2FUser.Read&response_type=code+id_token&&redirect_uri={redirectUri}&nonce=678910

2.请求访问令牌

POST: https://login.microsoftonline.com/common/oauth2/v2.0/token

client_id={clientId}&scope=openid%20https%3A%2F%2Fgraph.microsoft.com%2FMail.ReadWrite%20https%3A%2F%2Fgraph.microsoft.com%2FUser.ReadBasic.All%20https%3A%2F%2Fgraph.microsoft.com%2FUser.Read
&code={codeFromPreviousRequest}&redirect_uri={RedirectUri}&grant_type=authorization_code&client_secret={client_secret}

对于管理员登录,我们只需添加上述请求的额外范围。以下是一些关于这个主题的有用文章:

v2.0 终结点有何不同?

v2.0 协议 - OpenID Connect v2.0 协议 - OAuth 2.0 授权代码流

 类似资料:
  • 我是微软图形API的新手。我们的应用程序要求根据预期主题收集最新电子邮件,并收集电子邮件附件(CSV格式)。 当使用下面的查询时,但是使用2个GET请求时,这已经很好了: 首先是收集最新的电子邮件: https://graph.microsoft.com/v1.0/me/messages?$select=id,有附件 第二种是通过传递从第一个查询返回的id来收集附件: https://graph.

  • 背景 : 从库Pika得到主库的全部DB结构,接下来以partition维度做Trysync,如果从库确认可以增量同步,从库将以partition为维度进行增量同步。默认使用pika port+2000的端口进行增量同步。 Binlog 结构: Pika的主从同步是使用Binlog来完成的,一主多从的结构master节点也可以给多个slave复用一个Binlog,只不过不同的slave在bingl

  • 我正在尝试使用microsoft graph检查是否已签出一个onedrive文件。根据文件https://learn.microsoft.com/en-us/onedrive/developer/rest-api/resources/driveitem,存在DriveItem的发布属性。但默认情况下不返回此属性。但是文档没有提到如何检索此属性。

  • 我试图在我的应用程序中使用Google Oauth2实现增量授权。 起初,当用户登录时,应用程序正在请求一些范围和脱机访问。我正在数据库中生成和存储刷新令牌,以便在需要时刷新访问令牌以进行API调用。 现在我要实现一个新功能,它将请求一个新的作用域,但我只想在用户尝试使用这个新功能时请求这个作用域。 我面临的问题是,当应用程序提示用户同意新范围时,谷歌正在请求访问所有以前接受的范围。 我尝试过不使

  • 我使用的是Android studio 3.1.3(编写本文时的最新版本)和Gradle 3.1.3。 我不知道这是否重要,但我最近升级到了Ubuntu18.04 每当我启动Android studio时,它都是从非常小的内存占用开始的。(一个名为java的进程占用大约1GB的RAM) 还有其他人面临这个问题吗?当我在Ubuntu16.04和旧的android工作室时,这不是问题。Ubuntu一定

  • 问题内容: 我了解对此主题有很多疑问。但是我仍然有些困惑,不确定何时使用这些操作。我正在为参加考试而做的旧考试。其中一种方法返回可访问的残疾人可用教室的数量。我编写了counter方法,但不确定是应该先递增还是递后递增计数器。我对它如何与方法中的return语句混淆。我仍然不知道该方法将在下面返回什么值。其他问题未在方法中显示返回值,因此我对它的工作方式感到困惑。这是代码: 问题答案: 当您要在表