开发流程 向 Azure Active Directory (AAD) 注册的客户端 ID 和密钥(客户端密码) 从 OAuth 2 授权代码流收到的授权代码 OneDrive for Business...API 终结点 URL OneDrive for Business 资源的访问令牌 在当前令牌到期时生成其他访问令牌的刷新令牌。...refresh_token': token['refresh_token'], 'grant_type': 'refresh_token', 'resource': 'https://graph.microsoft.com...r.status_code not in [200, 201, 202]: print("上传出错") break 遇到的几个坑 终结点是https://graph.microsoft.com...onedrive的请求api是https://graph.microsoft.com/v1.0/me/drive,但是文档中以及网上教程写的是https://graph.microsoft.com/me
在这种情况下,应用程序的服务器永远不会向服务发出 API 请求,因为一切都直接在浏览器中处理。 授权 授权代码是一个临时代码,客户端将用它来交换访问令牌。...code(必需的) 此参数用于从授权服务器接收到的授权代码,该代码将包含在该请求的查询字符串参数“code”中。...此外,浏览器 API 的添加意味着ServiceWorkers现在基于浏览器的应用程序有可能在用户未主动使用浏览器时运行代码,例如响应后台同步事件。...具体来说,刷新令牌必须仅对一次使用有效,并且授权服务器必须在每次发布新的访问令牌以响应刷新令牌授予时发布一个新的刷新令牌。...刷新令牌还必须具有设置的最长生命周期,或者如果在一段时间内未使用则过期。这又是另一种帮助减轻刷新令牌被盗风险的方法。
据Bleeping Computer网站消息,俄罗斯黑客已经开始使用一种新的代码执行技术,该技术依赖于 Microsoft PowerPoint 演示文稿(PPT)中的鼠标移动来触发恶意 PowerShell...Graphite 滥用 Microsoft Graph API 和 OneDrive ,与命令和控制 (C2) 服务器通信。...攻击者通过使用固定客户端 ID 访问服务以获取有效的 OAuth2 令牌。...【Graphite 使用的固定客户端 ID】 研究人员解释说,使用新的 OAuth2 令牌,Graphite 通过枚举 check OneDrive 子目录中的子文件来查询 Microsoft GraphAPI...“如果找到新文件,则下载内容并通过 AES-256-CBC 解密算法解密,恶意软件通过分配新的内存区域并执行接收到的 shellcode 来允许远程命令执行调用一个新的专用线程。”研究人员说道。
API——资源 客户端希望访问的目标应用程序。在本例中,Microsoft OneDrive API 终端是资源。 资源拥有者 允许访问其部分帐户的人员。在本例中,就是你。...服务器可以与API资源相同,或者是另一个不同的组件。在本例中,Microsoft登录门户是“授权服务器”。 范围 范围定义为第三方应用程序请求的访问类型。...访问令牌可以在设定的时间段内使用,从API资源访问用户的数据,而无需资源所有者采取任何进一步的行动。...攻击者可能会创建恶意应用程序,并使用获取的访问令牌通过API资源获取受害者的帐户数据。访问令牌不需要知道用户的密码,并能绕过双因素认证。...虽然任何允许OAuth应用程序的云环境都可以成为目标,但是PwnAuth目前使用一个模块来支持恶意Office 365应用程序,捕获OAuth令牌并使用捕获的令牌与Microsoft Graph API
有关使用刷新令牌获取新访问令牌的更多详细信息,请参见下文。 如果您想了解有关登录用户的更多信息,您应该阅读特定服务的 API 文档以了解他们的建议。...Refresh Tokens 当您最初收到访问令牌时,它可能包含刷新令牌以及过期时间,如下例所示。...访问令牌可能因多种原因而过期,例如用户撤销应用程序,或者如果授权服务器在用户更改密码时使所有令牌过期。 如果您发出 API 请求并且令牌已经过期,您将收到一个表明此情况的响应。...error": "invalid_token", "error_description": "The access token expired" } 当您的应用程序识别出此特定错误时,它可以使用之前收到的刷新令牌向令牌端点发出请求...,并且可以选择一个新的刷新令牌,就像您在将授权代码交换为访问令牌时收到的一样。
获取 OAuth 令牌 攻击者在样本中内置了 Refresh Token,这是 OAuth 2 规范的一部分,允许在过期后发布新的 OAuth Token。...使用该 OAuth Token 就可以向 Microsoft Graph API 请求(https://graph.microsoft.com/v1.0/me/drive/root:/Documents...请求结构为:https://graph.microsoft.com/v1.0/me/drive/root:/Uploaded/???:/content。...通过 OneDrive 下载文件,请求结构为https://graph.microsoft.com/v1.0/me/drive/root:/Downloaded/???:/content。...Execute 未响应任何指令时,将进入该分支。响应中可以包含要执行的命令数组或先前下载文件的文件路径。攻击者也可以使用单命令与文件路径的组合。
是只谁颁发的这个令牌,很显眼就我们azure认证的一个域在加上我们创建的这个租户 3,iat:令牌颁发时间 4,exp:令牌过期时间,与上面的颁发时间相差5分钟 5,appid:客户端Id,就是在Azure...3)查看WebApi的作用域 选择 管理=》公开 API 复制 WebApi的作用域 4)查看WebApi的终结点 复制当前应用程序的 OAuth 2.0令牌终结点(v2)链接,注意圈起来的...参数必传 这时候,就又有人问了,为什么这里的 scope 参数的值和上面不一样,确实,我也有这个疑问,后来找到微软官方给我的文档解释道: Microsoft Graph 示例中,该值为 https...://graph.microsoft.com/.default。...此值告知 Microsoft 标识平台终结点:在为应用配置的所有直接应用程序权限中,终结点应该为与要使用的资源关联的权限颁发令牌 使用共享机密访问令牌请求:https://docs.microsoft.com
在本例中,获取的令牌有效期只有1分钟,超过时间就需要刷新令牌: /// /// 使用指定的令牌,直接刷新访问令牌 /// </summary...由于令牌过期后需要刷新令牌获取新的访问令牌,否则应用使用过期的令牌访问就会出错,因此我们应该在令牌超期之前就检查令牌是否马上到期,在到期之前的前一秒我们就立即刷新令牌,用新的令牌来访问资源服务器;但是刷新令牌可能导致之前一个线程使用的令牌失效...,造成访问未授权的问题,毕竟授权服务跟资源服务器分离之后,这个可能性是比较高的,因此我们需要对令牌的使用进行管理,降低发生问题的风险。...\r\n**下面将刷新令牌,但可能导致之前还未处理完的资源服务器访问被拒绝访问。")...,刷新令牌失败,或者获取到了令牌但等到访问资源服务器的时候令牌又被别的线程刷新导致资源访问未授权失败的情况,这些复杂的情况处理起来比较麻烦,目前遇到访问未授权的时候,采取重试2次的策略。
就需要刷新令牌。刷新令牌需注意何时决定使用刷新令牌。 在xx排版软件收到访问令牌同时,也会收到访问令牌的过期时间 expires_in。...即比如xx访问我的公众号文章时,突然收到一个访问令牌失效的响应,此时xx立即使用 refresh_token 请求一个访问令牌,以便继续代表我使用我的这些文章数据。...刷新令牌是一次性的,使用后就失效,但它的有效期会比访问令牌长。 若刷新令牌也过期呢? 需将刷新令牌和访问令牌都放弃,几乎回到系统初始状态,只能让用户重授权。...肯定要看该令牌到底能操作哪些、能访问那些数据。 2.1 不同权限对应不同操作 操作对应 API,比如公众号平台提供有查询、新增、删除文章 API。...若xx请求过来的一个访问令牌 access_token 的 scope 权限范围只对应查询、新增 API,那包含该 access_token 值的请求,无法执行删除文章 API。
服务器接收到请求后,会检查请求头中的 Authorization 字段,如果它以 Bearer 关键字开头,服务器就会提取出后面的令牌,并使用令牌来验证请求的合法性和授权级别,确认无误后提供请求的资源。...例如,客户端想要访问api.example.com上的某个受保护的资源: GET /api/resource HTTP/1.1 Host: api.example.com Authorization:...资源服务器验证 Token 资源服务器在收到请求后,会解析并验证 Bearer Token。...如果 Token 有效且未过期,服务器会处理请求并返回相应的资源;如果 Token 无效或已过期,服务器会返回 401 未授权错误。...可以结合刷新 Token 机制来延长用户会话。 限制 Token 权限:Bearer Token 应该尽可能限制其权限,只授予客户端所需的最小权限。
如果您有一个单页面 Web 应用程序 (SPA),它针对托管在不同域上的身份提供者(IdP,例如 IdentityServer 4[6])进行身份验证,并且该应用程序使用所谓的静默令牌刷新,您就会受到影响...在身份验证流程结束时,来自不同域的应用程序会收到某种访问令牌,这些令牌通常不会很长时间。...当该令牌过期时,应用程序将无法再访问资源服务器 (API),如果每次发生这种情况时用户都必须重新登录,这将是非常糟糕的用户体验。 为防止这种情况,您可以使用静默令牌刷新。...如果不是这种情况,您的静默令牌刷新将在 2 月 Chrome 80 发布时中断。...如果您的应用程序需要从依赖于 cookie 身份验证的浏览器请求第 3 方 API,这同样适用。 注意: 显然您只能更改您自己的服务器关于cookie设置的cookie 行为。
在未登出服务器 A ,并在 session_id 失效前用户浏览位于 hacked server B 上的网站。...creditAccount=1001160141&transferAmount=1000">嵌入资源起了作用,迫使用户访问目标服务器 A 由于用户未登出服务器 A 并且 sessionId 未失效,请求通过验证...action属性为空( action="") 或者 未提供action属性()。..., Microsoft.AspNetCore.Mvc.TagHelpers 提示: Razor页面会自动受到XSRF/CSRF的保护。...如果服务器收到与经过身份验证的用户的标识不匹配的令牌,将拒绝请求。 该令牌唯一且不可预测。 该令牌还可用于确保正确序列化的一系列的请求 (例如,确保请求序列的: 第 1 页–第 2 页–第 3 页)。
(D)客户端收到授权码,附上早先的”重定向URI”,向认证服务器申请令牌。这一步是在客户端的后台的服务器上完成的,对用户不可见。...(E)认证服务器核对了授权码和重定向URI,确认无误后,向客户端发送访问令牌(access token)和更新令牌(refresh token) 微信登录的官方文档将微信登录分为3个步骤: 第一步.请求...,向自己的服务器发起登录请求,并附带收到的授权码。...)较短,当access_token超时后,可以使用refresh_token进行刷新,access_token刷新结果有两种: 1.若access_token已超时,那么进行refresh_token会获取一个新的...access_token,新的超时时间; 2.若access_token未超时,那么进行refresh_token不会改变access_token,但超时时间会刷新,相当于续期access_token
前端在接收到JWT的access_token后会将access_token存储到浏览器LocalStorage中。...以及access_token和refresh_token很巧妙的实效设置,达到双令牌刷新、续期。 AccessToken和RefreshToken 什么是 Access Token ?...应用需要携带 Access Token 访问资源 API,资源服务 API 会通过拦截器查验 Access Token 中的 scope 字段是否包含特定的权限项目,从而决定是否返回资源。...只要不超过7天内未访问系统,那就可以一直是登录状态,可以无限续签,不需要登录。如果超过7天未访问系统,那么refresh_token也就过期了,这时候需要重新登录了。...这样显然体验不好,接下来实现用refresh_token来刷新获取新的访问令牌access_token 通过调用刷新令牌refreshToken()方法来获取最新的访问令牌access_token 刷新令牌伪代码参考
服务从API获取令牌 logout - 从浏览器存储中清除用户资料 refresh token - 从API服务获取刷新令牌 如果您注意到了,您会发现那里有一个神秘的401拦截器逻辑-我们稍后将解决。...补充:如何刷新过期的访问令牌? 关于身份验证,要处理令牌刷新或401错误(token失效)比较困难,因此被许多教程所忽略。...如果是,则我们正在检查401是否在令牌刷新调用本身上发生(我们不想陷入循环中) 永久刷新令牌!)。然后,代码将刷新令牌并重试失败的请求,并将响应返回给调用方。...如果访问令牌到期,所有请求将失败,并因此触发401拦截器中的令牌刷新。从长远来看,这将刷新每个请求的令牌,这样不太好。...通过保存刷新令牌promise,并向每个刷新令牌请求返回相同的promise,我们可以确保令牌仅刷新一次。 您还需要在设置请求header之后立即在main.js中安装401拦截器。
在之前的文章,我们探索了API访问控制和身份认证。 现在我们要把这两个部分结合在一起。 OpenID Connect和OAuth 2.0组合的优点在于,您可以使用单一协议和令牌服务进行单一交换。...最后,我们还让客户端访问offline_access作用域 - 这允许为长时间的API访问请求刷新令牌: new Client { ClientId = "mvc", ClientName...使用访问令牌 OpenID Connect中间件会自动为您保存令牌(标识,访问和刷新)。 这就是SaveTokens设置的作用。 技术上,令牌存储在cookie。...访问它们的最简单方法是使用Microsoft.AspNetCore.Authentication命名空间的扩展方法。...API,您只需检索令牌,并将其设置在您的HttpClient上: public async Task CallApiUsingUserAccessToken() {
社区优秀文章 Laravel 5.5+passport 放弃 dingo 开发 API 实战,让 API 开发更省心 - 自造车轮。...API 文档神器 Swagger 介绍及在 PHP 项目中使用 - API 文档撰写方案 推荐 Laravel API 项目必须使用的 8 个扩展包 使用 Jwt-Auth 实现 API 用户认证以及无痛刷新访问令牌...实现 Auth 认证 使用 Laravel 的 API 资源功能来构建你的 API 单个 Laravel 项目同时配置不同域名 api.domain(用户端接口) 和 admin.domain(管理员端...,由李锟翻译,有经验的同学可以挑战一下 Microsoft REST API Guidelines 微软官方的 REST API 设计指南,值得参考 理解 HTTP 幂等性 讲得很清楚,推荐 浅析远程过程调用...decision-graph.svg 一张大图展示整个 REST API 的验证过程,及各种状态码出现的时机 现成 API 例子 Github API v3 被很多人参考和引用,比如对分页的处理方法、
令牌验证是有效的,用于在这个API 在项目中添加nuget包Microsoft.AspNetCore.Authentication.JwtBearer: 这里使用了Microsoft.AspNetCore.Authentication.JwtBearer...,然后使用这个令牌来访问 API。...最后是调用 API。 为了发送访问令牌到 API,你一般要使用 HTTP 授权 header。...进一步实践 当前演练目前主要关注的是成功的步骤: 客户端可以请求令牌 客户端可以使用令牌来访问 API 你现在可以尝试引发一些错误来学习系统的相关行为,比如: 尝试在 IdentityServer 未运行时...(unavailable)连接它 尝试使用一个非法的客户端id或密码来请求令牌 尝试在请求令牌的过程中请求一个非法的 scope 尝试在 API 未运行时(unavailable)调用它 不向 API
在这项研究中,我们发现了数以千计的 API 令牌,这些令牌暴露给恶意行为者,使数百万最终用户可能受到攻击。...因此,我们搜索了 HuggingFace 令牌正则表达式(user和org_api令牌),通过这样做,我们能够收到数千个结果,但只能读取其中的 100 个。...在此 API 调用中,我们收到了以下数据:令牌有效性拥有令牌的 HuggingFace 用户用户的电子邮件(用于通知其令牌的暴露)此用户所属的组织及其拥有的权限令牌的权限/特权其他具体信息 ...因此,我们决定对其进行研究,发现写入功能确实不起作用,但显然,即使对库中的登录函数进行了微小的更改,读取功能仍然有效,并且我们可以使用我们发现的令牌来下载带有公开org_api令牌的私有模型(例如Microsoft...许多组织(Meta、Google、Microsoft、VMware 等)和用户采取了非常快速和负责任的行动,他们在报告的同一天撤销了令牌并删除了公共访问令牌代码。
打开你的Visual Studio或者VS Code,在项目中运行以下命令: dotnet add package Microsoft.AspNetCore.Authentication.JwtBearer...保护API 现在,你的API已经可以生成JWT令牌了。为了保护你的API,你需要在需要验证用户身份的地方加上[Authorize]特性。...."); } 测试API 现在你可以使用JWT令牌来测试你的API了。在请求的Header中添加Authorization字段,值为Bearer加上你生成的JWT令牌。...如果JWT令牌是有效的,你就可以成功访问受保护的API。...通过这篇简单的教程,你已经了解了如何在.NET 5 Web API中使用JWT来保护你的Web应用。JWT是一种灵活且安全的认证方式,它可以帮助你验证用户身份并保护你的API免受未授权访问。
领取专属 10元无门槛券
手把手带您无忧上云