如何使用Oauth流向Rails应用程序中的Microsoft Graph API管理管理身份验证
问题描述:
我正在努力寻找合适的流程。我有一个Rails应用程序,在Microsft App门户上注册(使用Id,Pwd和Scopes)。为了尽可能简单:我需要通过我的应用程序访问公司的所有电子邮件(只读)。它是一个服务器应用程序,它在夜间处理信息。如何使用Oauth流向Rails应用程序中的Microsoft Graph API管理管理身份验证
我的理解,并试图:
得到一个登录链接,为公司的管理员:
https://login.microsoftonline.com/{TENANT_ID}/oauth2/authorize?client_id={MY_APP_ID}&response_type=code&redirect_uri=MY_APP_ADDRESS&response_mode=query&prompt=admin_consent
在回调中,我得到的PARAMS代码。从该代码中,我得到一个带有POST请求的令牌,指定:
client_id: MY_APP_ID,
grant_type: "authorization_code",
code: MY_RECEIVED_CODE,
redirect_uri: MY_APP_ADDRESS,
client_secret: MY_CLIENT_SECRET,
resource: "https://graph.microsoft.com/"
从那我得到一个令牌。一个简单的获取消息的请求对于管理员邮箱(验证访问的那个人)来说效果很好;当我为组织中的任何其他人尝试时,“拒绝访问”。
最后一点。在Microsoft应用程序门户中定义的作用域:Group.Read.All和Mail.Read(适用于应用程序或委托服务)
什么是正确的方法来完成这项工作?谢谢 !
答
将查询参数提示= admin_consent添加到授权请求,这样管理员将代表整个组织而不仅仅是为他/她自己同意。