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

Microsoft Graph API,密码授予选项

堵恺
2023-03-14

在本主题中,作者将介绍如何跳过授权对话框,根据用户登录和密码获取访问令牌。

我可以访问endpoint并获取访问令牌,然后刷新令牌:

GET https://login.microsoftonline.com/348a...6e4/oauth2/token?grant_type=password&\
client_id=6d5f...64f&client_secret=g...f2&username=user@Domain.com&\
password=P@ssW0RD&resource=https://graph.microsoft.com/&\
scope=user.read%20calendars.read%20MailboxSettings.Read%20Mail.read%20Mail.Send

//RESPONSE
{
    "token_type": "Bearer",
    "scope": "User.Read",
    "expires_in": "3600",
    "ext_expires_in": "3600",
    "expires_on": "1559602338",
    "not_before": "1559598438",
    "resource": "https://graph.microsoft.com/",
    "access_token": "eyJ0eXAiOiJKV...KJmNhyz5bvhzCWiFA",
    "refresh_token": "AQABAAA...VkgAA",
    "id_token": "eyJ0...xLjAifQ."
}

但是当我试图获取用户的电子邮件时,我得到了一个错误:

GET https://graph.microsoft.com/v1.0/me/messages?\
$select=sender,subject,ReceivedDateTime&\
$filter=ReceivedDateTime%20ge%202019-05-01&$top=20

RESPONSE

{
    "error": {
        "code": "ErrorAccessDenied",
        "message": "Access is denied. Check credentials and try again.",
        "innerError": {
            "request-id": "e35f...94",
            "date": "2019-06-03T21:39:40"
        }
    }
}

这种身份验证方法对Microsoft Graph API仍然有效吗?如果没有,是否有其他方法来获得用户授权,只使用登录和密码,没有任何用户交互,只获得他的登录和密码?

共有1个答案

刘永望
2023-03-14

不能用v1endpoint动态指定作用域。只有更新的v2endpoint才支持该模型(请参见文档中的作用域,而不是参考资料)。

为了访问用户的邮箱,您需要将mail.read添加到应用程序在Azure Portal中的注册中。

请记住,您要么需要管理员同意租户中所有用户的应用程序,要么让每个用户至少交互式登录一次,以便他们自己同意。

如果我不指出使用密码授权几乎总是一个坏主意,我也是失职的。从根本上说,它比其他OAuth赠款更不安全。

 类似资料:
  • 我一直在广泛阅读有关OAuth和OpenID Connect的内容,但此问题专门涉及OAuth2资源所有者密码授予(又名OAuth2资源所有者凭据授予,又名OAuth2密码授予) 某些资源(例如Justin Richer的《OAuth2 in Action》一书)说不要使用OAuth2资源所有者密码授予进行身份验证-请参阅书中的第6.1.3节。 以下其他好资源都说我们可以使用OAuth2资源所有者

  • 本文向大家介绍oauth 授权码授予,包括了oauth 授权码授予的使用技巧和注意事项,需要的朋友参考一下 示例 第1步 第2步 资源

  • 我是这方面的新手,读了很多之后,我觉得我不太明白如何在Keycloak中实现授权代码流。我的疑惑: > < li> 在创建了支持此流程的客户端后,如何执行凭据验证?默认情况下,如果我不做任何配置,我会得到一个登录表单。如果我在浏览器中打开这个html,并填写用户和密码字段,当我按下按钮时,它会将我发送到一个类型为.../realm/{ REAL _ NAME }/log in-actions/au

  • 问题内容: 我有一个用户,我想授予该用户对数据库模式的所有READ权限。 一种方法是这样的: 有没有一种方法可以将所有读取操作归类到Grant中? 问题答案: 如果有任何单一特权代表对数据库的所有读取操作。 这取决于您如何定义“全部阅读”。 从表和视图中“读取”是特权。如果这就是“全部阅读”的意思,那么可以: 但是,听起来您的意思是一种“看到”一切,“看起来而不是触摸”的能力。因此,这是我想到的其

  • 对于授权码授予,密钥是否应该映射到每个单独的用户? 发送电子邮件时,发件人的电子邮件是什么? 谢谢 J Larry的其他信息: 这太棒了!。Docusign对库存流进行了积极监控!我正在使用JWT 我配置了一个用户。我假设电子邮件正文将类似于下面的一个。 我的问题是,如果使用密钥来识别应用程序,客户知道电子邮件是从应用程序发送的,但他如何知道使用应用程序的哪个员工发送电子邮件? 请参阅以下电子邮件

  • 本文向大家介绍oauth 资源所有者密码凭证授予,包括了oauth 资源所有者密码凭证授予的使用技巧和注意事项,需要的朋友参考一下 示例 资源