我花了一些时间玩Azure AD OAuth 2.0。
与Microsoft Graph一起使用时,使用范围https://outlook.office.com/mail.read
获取的访问令牌会引发401 Unauthorized
。
同样,使用范围https://graph.microsoft.com/mail.read
获取的访问令牌在与Outlook REST API端点一起使用时会抛出401 Unauthorized
。
另外,如果我在授权用户时提及两个范围,我会收到错误。
是否可以拥有允许访问Microsoft Graph和Outlook REST API端点的访问令牌?
我正在构建一个电子邮件应用。最初,我将构建基本功能,如同步/发送电子邮件。
我将使用Microsoft Graph,因为它支持我目前需要的所有内容以及Microsoft recommends it个别服务API端点。
我担心未来。我目前将获得的OAuth访问令牌的范围为https://graph.microsoft.com/mail.read
。将来,可能会发生Microsoft Graph不支持我要构建的新功能,但Outlook REST API端点支持它。在这种情况下,我想使用Outlook REST API端点。
我是否必须为每个用户维护两套OAuth访问令牌?同时要求每个用户重新认证也不是一个好主意。
答案 0 :(得分:6)
是的,您可以使用RefreshToken在请求图形访问(范围)时获取具有与授权范围相同的范围的各个端点的AccessToken。
E.g。如果您请求Mail.Read
(https://graph.microsoft.com/mail.read
的短名称),则可以使用带有scope="https://outlook.office.com/mail.read"
的refresh_token返回令牌发布端点,并获取此端点的accesss_token。