如何通过OAuth2.0完成Microsoft平台登录验证

这篇具有很好参考价值的文章主要介绍了如何通过OAuth2.0完成Microsoft平台登录验证。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

参考内容:

OAuth2 in Python | TestDriven.io

代表用户获取访问权限 - Microsoft Graph | Microsoft Learn

OAuth 2.0 Bearer Token Usage

首先需要了解的是,通过Microsoft平台做身份验证,有一些配置时拿到的参数不可或缺(在身份验证的步骤中会用到,不一定是同一个步骤用到),其中包括:

  • client_id:应用程序id

  • client_secret:应用程序密钥

  • authority:

微软提供的authority形如https://login.microsoftonline.com/Enter_the_Tenant_Name_Here,Tenant_Name是租户id,在配置微软账号的时候会给出,是使用者一开始就会已知的参数

  • redirect_uri:身份验证成功后重定向到的指定网址

  • scope:服务端配置的允许客户端访问资源的作用域(类似于能访问到什么样的程度),是OAuth2.0的一种机制

  • state:一串应用提供的随机数,用于方便检测跨站点请求伪造(CSRF)针对客户端的攻击(见微软官方文档说明)

  • code:获取access_token必需的参数,一开始未知,需要服务端返回

访问用户资源的流程如下图所示:

如何通过OAuth2.0完成Microsoft平台登录验证

大体上来说包括3步:①获取授权(拿到code) ②通过code拿到access token ③通过access token访问资源。

获取授权(拿到code)

在实践时,通过将client_id,response_type,redirect_uri,scope和state发送给形如authority+/oauth2/v2.0/authorize 的终结点来拿到code。

❀ 需要注意的是,response_type是在这一步必须要携带的参数,且response_type=code,官网还提供了一个参数叫response_mode,但是它不是必需的参数,不加也可以,如果要加,可以把response_mode设置成query或者form_post

拿到access token

会发现通过上一步之后,code会附在redirect_uri的 '?' 之后,形如 redirect_uri?code=xxxx ,所以很容易就能想到通过request.args.get('code')拿到这一串code。

然后我们通过将client_id,client_secret,code,redirect_uri,grant_typeinclude_client_id

发送给形如 authority+/oauth2/v2.0/token 的终结点来拿到access token。

❀ 需要注意的是,在实践中,如果使用了python的oauthlib这个第三方库(一般为了方便还是会使用),在数据中就不需要带有grant_type,因为oauthlib会默认帮你添加(参见web_application.py)

如何通过OAuth2.0完成Microsoft平台登录验证

❀ include_client_id的默认值是True,是为了防止发送数据时还未授权(已经授权过其实不需要这个参数,如果为了保险也可以加,没什么影响)

通过access token访问用户资源

通过上一步操作,可以在返回的json格式数据中找到access_token字段,这就是访问用户资源的🔑。(我们离成功已经很接近了!!!!....)

这一步我们只需要把access_token包含在请求标头,向https://graph.microsoft.com/v1.0/me 请求用户资源即可,标头可形如:

header = {

'Authorization': 'Bearer {}'.format(client.token['access_token'])

}

这个意思就是,标头的形式是 Bearer xxxxx(xxxxx是access token)

至于为什么要用Bearer开头,有部分文章说是Authorization头定义的schema,除了Bearer以外还有其他的schema,如果按照官方资料来简单理解,Bearer Token就是一个OAuth2.0访问资源的标准规范,有兴趣可以看这个介绍文档:

RFC 6750: The OAuth 2.0 Authorization Framework: Bearer Token Usage (rfc-editor.org)

另外还需要注意的是,这个网关中间的部分确实是/v1.0/,不像其他的终端节点是/v2.0/。

Microsoft Graph是一个可以访问Microsoft云中海量数据的API(稍加尝试,可以发现,如果用的是https://graph.microsoft.com/v1.0/users,会得到所有进行过身份验证的用户的信息....),返回的也是json格式的数据,其中可能包括用户的姓名、邮箱、职业等.....后续可以根据项目和个人需求拿取字段使用。

以上就是根据OAuth2.0在Microsoft平台进行身份验证(单点登录sso)的流程。本文叙述的是通过python来进行的操作,因为python有自带一些第三方库来简化操作,如果使用其他的编程语言,流程也类似,只是可能在向服务端发送凭据时需要特别注意不要漏掉某些字段。文章来源地址https://www.toymoban.com/news/detail-490398.html

到了这里,关于如何通过OAuth2.0完成Microsoft平台登录验证的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包赞助服务器费用

相关文章

  • 【OAuth2】OAuth2概述及使用GitHub登录第三方网站

    【OAuth2】OAuth2概述及使用GitHub登录第三方网站

    我们在浏览器上可以访问成百上千个网站,使用每个网站的服务一般都要先注册账号,那么我们为了更好地记忆,一般都会在多个网站使用相同的账号和密码进行注册。那么问题就来了,如果在你注册的网站中有某些个网站的系统设计不够严谨和安全,数据库的用户信息使用

    2024年01月19日
    浏览(27)
  • 学习使用 AWS Cognito 并 OAuth2 验证

    OAuth 是 Open Authorization 的缩写,是一种开放的可为 Web 或桌面应用进行用户验证和授权的协议。例如,在互联网上的许多应用,可不用额外注册帐户而采用第三方的帐户(Gmail, Apple Id 等)登陆并完成授权,这就有 OAuth 身影。 当我们提到 OAuth 的时候,常常会碰到 OAuth 1.0, OAuth 2.

    2023年04月08日
    浏览(6)
  • 五、SpringSecurity OAuth2扩展手机验证码授权模式

    五、SpringSecurity OAuth2扩展手机验证码授权模式

    代码仓库:地址 代码分支:lesson5 在上一篇文章中,我们使用SpringSecurity OAuth2搭建了一套授权服务,对业务系统进行统一授权管理。OAuth提供了四种授权方式: 授权码模式(authorization_code) 简化模式(implicit) 客户端(client_credentials) 密码(password) 在实际业务中上述四种模式不

    2024年02月11日
    浏览(7)
  • 【OAuth2系列】Spring Cloud Gateway 作为OAuth2 Client接入第三方单点登录代码实践

    【OAuth2系列】Spring Cloud Gateway 作为OAuth2 Client接入第三方单点登录代码实践

            在年初的时候我参与了一个项目,当时是很多家公司协同完成这个项目,其中一个公司专门负责登录这块的内容,需要我们的后端接入他们的单点登录(OAuth2 授权码模式),这块接入工作是由我来负责,我们的项目是微服务架构,经过网上各种查阅资料发现网关作为

    2024年02月04日
    浏览(14)
  • SpringSecurity +oauth2获取当前登录用户(二)

    SpringSecurity +oauth2获取当前登录用户(二)

    特别注意:以下内容如果访问失败或有其他疑问,可先学习: SpringSecurity +oauth2+JWT实现统一授权和认证及项目搭建(一) 1 获取当前用户的信息代码为: 但是,通过运行会发现principal的值只是 用户名 ,没有用户信息,通过去看源码,才发现问题所在,以下是源码: 源码类:

    2023年04月12日
    浏览(8)
  • Oauth2使用postman登录获取token

    Oauth2使用postman登录获取token

    网关请求拦截-(CheckJwtFilter.java) 网关配置把获取到的token存入redis-(GatewayConfig.java)它是把我们访问网关的路由转发到授权微服务 授权服务认证配置-(AuthorizationConfig.java) 授权服务安全配置-(WebSecurityConfig.java) 授权服务登录-(UserDetailsServiceImpl.java) 授权服务启动类-(AuthServerApplicatio

    2023年04月08日
    浏览(13)
  • Python oauth2登录Outlook读取邮件

    Python oauth2登录Outlook读取邮件

    微软登录方式发生了改变,需要用 oauth2 ,以前的写的脚本都登录不上了,本文记录下更新后的登录方式。 报错如下: imaplib.IMAP4.error: b’LOGIN failed.’ 1.在Azure 门户注册应用程序 这里可以跟着官方教程走 传送门:https://learn.microsoft.com/zh-cn/azure/active-directory/develop/web-app-quicks

    2024年02月04日
    浏览(15)
  • Spring Security oauth2.0微信小程序登录

    Spring Security oauth2.0微信小程序登录

    微信小程序前期开发准备,可以参考这篇文章微信小程序前期准备 1、学习过Spring Secrity oauth2.0的都知道,他有四种登录模式可以选择 authorization code(授权码模式) implicit(简化模式) resource owner password credentials(密码模式) client credentials(客户端模式) 前三种模式都需要用

    2024年02月10日
    浏览(12)
  • 自定义OAuth2组件实现对授权码登录模式的封装

    所谓OAuth2其实就是Open Authorization,即开放授权,是一种授权机制或者说是一种协议。 OAuth2允许用户授权第三方应用访问其存储在开放平台(授权服务器)中的数据而不需要提供密码 。授权服务器根据OAuth2协议标准制订一套授权的API,第三方网站接入开放平台之后即可通过其

    2024年02月05日
    浏览(10)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包