首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >微软通过Oauth2登录会返回状态码200而不是302

微软通过Oauth2登录会返回状态码200而不是302
EN

Stack Overflow用户
提问于 2018-04-04 01:16:16
回答 2查看 749关注 0票数 0

当我以编程方式遵循协议(python2和请求)时,Oauth2身份验证不起作用。但当我使用浏览器时,它可以正常工作。我的目的是从重定向的url中检索授权码,以便生成访问令牌。

我应该在头中添加一些东西来允许重定向吗?

代码语言:javascript
复制
import requests
uri = https://login.microsoftonline.com/0000-0000-0000-0000/oauth2/authorize?response_type=codel&client_id=0000-0000-0000-0000-0000&response_mode=query&resource=https%3A%2F%2Fwww.foo.com%2F&redirect_uri=http%3A%2F%2Flocalhost:80%2F
r = requests.get(uri)
print r.url
print r.status_code
print r.history

状态代码是200,但我希望得到302状态和结果url,如下所示:localhost:80/?code=mycode&state=mystate&session_state=thesessionstate

诚挚的问候。

EN

回答 2

Stack Overflow用户

发布于 2018-04-04 01:17:38

为什么你会期望302分?这也需要您传入会话cookie。

它返回一个200OK,因为响应包含登录屏幕。

当您拥有这样的脚本时,您可能应该使用客户端凭据流(它使用应用程序权限):https://docs.microsoft.com/en-us/azure/active-directory/develop/active-directory-protocols-oauth-service-to-service

另一种选择是设备代码流,我在我的博客https://joonasw.net/view/device-code-flow中描述了这一点。

票数 1
EN

Stack Overflow用户

发布于 2018-04-04 01:23:28

尝试设置这些标头:

代码语言:javascript
复制
Host: login.microsoftonline.com
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:59.0) Gecko/20100101 Firefox/59.0
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/49635758

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档