这是一篇发布在dotnet 团队博客上由微软Graph首席软件工程师 Joao Paiva 写的文章,原文地址: https://devblogs.microsoft.com/dotnet/microsoft-graph-dotnet...Microsoft Graph 是一个 API 网关,它提供了对 Microsoft 365 生态系统中数据和智能的统一访问。...我将向您详细介绍我们是如何将 Microsoft Graph 构建到现在这样海量服务中的过程。...对于像 Microsoft Graph 这样受计算约束的服务,使用新的运行时和算法来减少时间和空间复杂性至关重要,并且是使服务快速且可缩放的最有效方法之一。...NoWarn="NU1702" 在 Microsoft Graph 迁移的案例中,我们在不同的时间和不同的依赖项中使用了所有这些选项。
此类攻击不依赖凭据窃取,而是滥用OAuth 2.0授权框架中的“用户同意”流程,使恶意应用获得长期有效的刷新令牌(refresh token),进而通过Microsoft Graph API静默读取邮件...在此基础上,提出一套覆盖身份治理、条件访问、应用审计与用户教育的纵深防御体系,并给出关键策略配置与监控代码示例。...关键词:OAuth 同意滥用;假冒微软应用;Entra ID;多因素认证绕过;Graph API;条件访问1 引言多因素认证(MFA)作为现代身份安全的核心防线,已在绝大多数企业环境中广泛部署。...);用户点击“接受”,微软返回授权码;应用用授权码向令牌端点兑换访问令牌与刷新令牌;应用使用令牌调用Microsoft Graph API。...可通过Microsoft Graph API动态评估权限风险:HIGH_RISK_SCOPES = {'Mail.ReadWrite', 'MailboxSettings.ReadWrite','User.ReadWrite.All
Spring基于OAuth2协议编写的spring-oauth2实现,是行业级的接口资源安全解决方案,我们可以基于该依赖配置不同客户端的不同权限来访问接口数据。...比如我们现在有一个名为hengboy的账户:第一个人登录时令牌有效期为我们配置的最长有效期(假设为7200秒),这时又有第二个人登录的同一个用户,第二个人获取的令牌并不会重置有效期(可能还剩下3000秒...true,表示默认情况下刷新令牌(refresh_token)是可以重复使用的,一般刷新令牌的过期时间都比较久,当请求令牌(access_token)失效后根据刷新令牌进行获取新的有效请求令牌。...,而这两次的令牌内容是完全不同的,这也就是实现了针对同一个账号不同人登录时返回新的令牌的需求。...,第一次刷新使用的是第一次获取的刷新令牌,这样其实也就是刷新的第一次的请求令牌,与第二次的无关!!!
该流程允许用户在另一台具备浏览器的设备上完成授权,从而获取访问令牌。...一旦授权完成,攻击者即可通过device_code兑换令牌,获得与用户同等的API访问权限。...与refresh_token;利用令牌调用Microsoft Graph API,读取邮件、日历、联系人,甚至创建新应用或修改权限。...随后,攻击者可使用该令牌调用Graph API:# Example: Read user's mailboxheaders = {'Authorization': f'Bearer {token_json...未来需推动更细粒度的权限委托机制(如Microsoft Graph Delegated Permissions with Scopes Restriction)。另一个挑战是刷新令牌的长期有效性。
攻击目标不再是静态密码,而是动态的、具有时效性的授权令牌;攻击载体不再是可执行文件,而是合法云服务的API接口。这一变化对企业的安全边界提出了全新挑战。...攻击者随即用该授权码向/token端点交换访问令牌与刷新令牌:POST https://login.microsoftonline.com/common/oauth2/v2.0/tokenContent-Type...Graph API读取邮件、发送钓鱼邮件、下载OneDrive文件等。...(二)策略管理层:建立授权生命周期管理定期授权审计:每季度导出全组织应用授权清单,清理未使用或来源不明的应用;实施最小权限原则:推动业务部门使用权限更细的现代API(如Microsoft Graph的delegated...permissions with scopes);自动化撤销机制:当检测到可疑活动时,自动调用Microsoft Graph API撤销相关应用授权:# 使用Microsoft Graph API撤销用户授权
关键词:OAuth 2.0;MFA绕过;Microsoft Entra ID;钓鱼攻击;身份安全;API权限;条件访问;第三方应用治理1 引言随着云办公的普及,Microsoft 365已成为全球企业数字基础设施的核心组成部分...(Access Token)与刷新令牌(Refresh Token);应用使用令牌调用Microsoft Graph API。...攻击者服务器立即用该码向/token端点请求访问令牌与刷新令牌:POST https://login.microsoftonline.com/common/oauth2/v2.0/tokenContent-Type...3.4 数据窃取与横向移动获得令牌后,攻击者可调用Microsoft Graph API执行以下操作:# 读取最新100封邮件Invoke-RestMethod -Uri "https://graph.microsoft.com...技术上,需通过策略限制、行为监控与自动化响应降低暴露面;管理上,需提升用户对权限授权的认知水平。唯有将身份治理纳入整体安全架构,方能在云时代有效抵御此类高级钓鱼威胁。
在此基础上,提出以“最小授权”“条件访问”“FIDO2强认证”为核心的纵深防御框架。...以Microsoft Entra ID为例,设备授权端点为:POST https://login.microsoftonline.com/{tenant}/oauth2/v2.0/devicecodeContent-Type...例如,UNK_AcademicFlare与某勒索软件团伙在2025年9月的攻击中,均使用名为“SecureAuth Helper”的伪装应用,请求相同权限集,仅在后续数据外泄方式上存在差异。...权限:勾选Microsoft Graph的Delegated权限,如:Mail.ReadWriteCalendars.ReadWriteUser.Read.AllFiles.ReadWrite.All4.2...,攻击者可调用Microsoft Graph API读取邮件:import requestswith open('stolen_token.json') as f:token = json.load(f
攻击者引导用户访问一个空白页面,并显示如下提示:“请在另一台设备上打开 microsoft.com/devicelogin,输入代码:ABCD-EFGH”同时,攻击者通过WhatsApp联系目标:“为完成注册...user_code=ABCD-EFGH&device_code=xyz...一旦用户分享该URL,攻击者即可提取device_code,并在后台轮询Microsoft令牌端点,等待用户在其他设备上完成授权...Graph API支持查询用户授予的同意记录:GET https://graph.microsoft.com/v1.0/me/oauth2PermissionGrantsAuthorization:...研究表明,此类攻击的成功并非源于技术漏洞,而是对身份信任链的精准操控。防御上,必须超越传统的边界防护思维,转向以身份为中心的零信任架构。...未来工作将聚焦于开发基于上下文的风险自适应授权引擎,实现“动态同意”机制,从根本上重塑OAuth的安全范式。编辑:芦笛(公共互联网反网络钓鱼工作组)
据Bleeping Computer网站消息,俄罗斯黑客已经开始使用一种新的代码执行技术,该技术依赖于 Microsoft PowerPoint 演示文稿(PPT)中的鼠标移动来触发恶意 PowerShell...该DLL 创建了一个用于持久性的注册表项。 【触发执行恶意代码】 接下来,lmapi2.dll在之前由 DLL 创建的新线程上获取并解密第二个 JPEG 文件并将其加载到内存中。...Graphite 滥用 Microsoft Graph API 和 OneDrive ,与命令和控制 (C2) 服务器通信。...攻击者通过使用固定客户端 ID 访问服务以获取有效的 OAuth2 令牌。...【Graphite 使用的固定客户端 ID】 研究人员解释说,使用新的 OAuth2 令牌,Graphite 通过枚举 check OneDrive 子目录中的子文件来查询 Microsoft GraphAPI
OAuth 是现代互联网身份授权的事实标准。它允许第三方应用在不获取用户密码的前提下,访问用户在其他服务(如 Google、Microsoft)上的资源。...轮询令牌(每5秒一次)while True:token_resp = requests.post("https://login.microsoftonline.com/common/oauth2/v2.0...Graph API 窃取数据breakelif token_resp.json().get("error") == "authorization_pending":time.sleep(5)else:...print("❌ 授权失败:", token_resp.text)break一旦拿到 access_token,攻击者即可调用 Microsoft Graph API 执行任意操作:# 示例:读取受害者最近...事实上,Google 已在其 OAuth 流程中引入更严格的审查机制,对高风险应用进行人工审核。而 Microsoft 目前仍以“自助注册”为主,门槛极低。“开放生态需要护栏,而不是放任。”
尤其在Microsoft 365、Google Workspace等企业生产力平台中,OAuth被深度集成于单点登录(SSO)、API调用、跨应用数据共享等关键场景。...向令牌端点换取访问令牌与刷新令牌;Client使用访问令牌调用受保护资源(如Microsoft Graph API)。...3.2 令牌持久化与横向移动获取授权码后,PhaaS平台立即向令牌端点发起请求:POST /common/oauth2/v2.0/token HTTP/1.1Host: login.microsoftonline.comContent-Type...获得令牌后,攻击者通过Microsoft Graph API执行侦察:import requeststoken = "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.xxxxx"headers...以下Python脚本利用Microsoft Graph API实现自动化审计:import requestsfrom datetime import datetime, timedeltadef audit_shadow_apps
API 终结点 URL OneDrive for Business 资源的访问令牌 在当前令牌到期时生成其他访问令牌的刷新令牌。...onedrive for business使用的是标准的Oauth2流程,所以大概流程就是先获取code,使用code交换access_token,然后就可以调用api了,这里先贴出获取code以及交换...refresh_token': token['refresh_token'], 'grant_type': 'refresh_token', 'resource': 'https://graph.microsoft.com...终结点是https://graph.microsoft.com onedrive的请求api是https://graph.microsoft.com/v1.0/me/drive,但是文档中以及网上教程写的是...https://graph.microsoft.com/me/drive,这也是我认为比较坑的一点 secret需要复制“值”,而不是“机密ID” 完整代码 此处内容需要评论回复后方可阅读 使用实例 1
,即使用户登出仍有效;Access Token:短期有效(通常1小时),但可用于调用Microsoft Graph API。.../.default返回的Access Token可立即用于读取邮件:GET /v1.0/me/messages HTTP/1.1Host: graph.microsoft.comAuthorization...刷新令牌生命周期过长:默认情况下,Microsoft Entra ID的刷新令牌有效期可达90天,且在用户未主动登出前持续有效。这为攻击者提供了长期潜伏窗口。...Microsoft Graph提供/revokeSignInSessions API,可编程终止可疑会话:import requestsdef revoke_suspicious_sessions(user_id...(三)浏览器内令牌绑定(DPoP)推动SaaS供应商支持OAuth 2.0 DPoP规范。DPoP要求客户端在每次API请求中附带一个由私钥签名的证明令牌,该私钥与TLS连接绑定。
此时,受害者实际上是在向攻击者控制的OAuth应用授权!因为那段“设备代码”是由攻击者提前通过其恶意注册的Azure AD应用生成的。...# 攻击者侧:使用Microsoft Graph API发起设备代码请求(简化示例)import requestsclient_id = "attacker-controlled-app-id" # 攻击者注册的恶意应用...breaktime.sleep(5)拿到Token后,攻击者即可调用Microsoft Graph API,读取邮件、日历、OneDrive文件、Teams消息,甚至发送新邮件冒充受害者——全程无需知道密码...例如,若某账户在短时间内从不同国家调用Graph API,即使Token合法,也应触发二次验证。(4)员工意识培训需升级传统“别点可疑链接”已不够。...但企业侧的策略配置、监控能力仍严重滞后。可以预见,未来几年,围绕OAuth令牌的攻防博弈将成为高级持续性威胁(APT)的核心战场。
1、 前言 在上一篇 Oauth2 的认证实战-HA 篇 中,我们说过 Oauth2 的高可用方案,但其实其场景仅仅在于密码模式下,如果是授权码模式下,将有点瑕疵,甚至需要配置其他的 hosts 来进行处理...2、Oauth2 的授权码模式 2.1 回忆 我们先回忆下,上一篇中如何做到 HA 的:首先各个客户端配置中配置了的认证中心是用域名的,也就是说通过服务发现来实现多个认证中心可以同时存在,并且通过 redis...其次,在配置中注意:加了"loadBalanced: true",另外在调用各个客户端时,我们通过网关来进行负载均衡的:"http://localhost:5555/provider-service/api.../user/getCurrentUser 方法二: http://localhost:2001/api/user/getCurrentUser?...Authorization:bearer fafcc3c8-28f5-4ce6-87df-e7f929fa6a34" -X DELETE http://localhost:5555/oauth-cas/api
网络安全研究人员披露了 npm 存储库中一个新恶意软件的详细信息,该软件可以作为功能齐全的 WhatsApp API 运行,但同时也具备拦截每条消息并将攻击者的设备与受害者的 WhatsApp 帐户关联起来的能力...具体来说,它能够捕获身份验证令牌和会话密钥、消息历史记录、包含电话号码的联系人列表,以及媒体文件和文档。...更重要的是,该库的设计灵感来源于@whiskeysockets/baileys,这是一个基于 WebSocket 的 TypeScript 库,用于与 WhatsApp Web API 进行交互。...“除了正常使用 API 之外,无需任何特殊操作。后门配对码也会在身份验证过程中激活——因此,当你将应用连接到 WhatsApp 时,攻击者的设备就会立即被关联。”...值得注意的是,GoogleAds.API 软件包专注于窃取 Google Ads OAuth 信息,而非窃取钱包数据密钥。
问题在于,对 JWT 的大多数解释都是技术性的,这一点让人很头疼。 让我们看下,我能否解释清楚 JWT 是如何在不引起你的注意下保护您的 API ! API 验证 某些 API 资源需要限制访问 。...保护HTTP API的困难在于请求是 无状态的 —— API 无法知道是否有两个请求来自同一用户。 那么,为什么不要求用户在每次调用 API 时提供其 ID 和密码呢?仅因为那将是可怕的用户体验。...即使 Payload 是在 API 上识别用户所需要的全部,它也不能提供身份验证的方法。如果其中包含所有内容,则有人可以轻松找到你的用户 ID 并伪造 Token 。...认证过程 因此,现在您对令牌的创建方式有了一个很好的了解。您如何使用它来验证您的API? 登录 用户登录时会生成令牌,令牌会与用户模型一起存储在数据库中。...logoutController.js user.token = null; user.save(); 总结 因此,这是关于如何使用 JSON Web 令牌保护 API 的最基本的说明。
因此,当你收到一个由你发出的令牌时,可以校验令牌是否真的由你发出。 通过这种方式,你可以创建一个有效期为 1 周的令牌。然后当用户第二天使用令牌重新访问时,你知道该用户仍然处于登入状态。...创建用于设定 JWT 令牌签名算法的变量 「ALGORITHM」,并将其设置为 "HS256"。 创建一个设置令牌过期时间的变量。 定义一个将在令牌端点中用于响应的 Pydantic 模型。...创建一个生成新的访问令牌的工具函数。 get_current_user使用的是 JWT 令牌解码,接收到的令牌,对其进行校验,然后返回当前用户。 如果令牌无效,立即返回一个 HTTP 错误。...使用令牌的过期时间创建一个 timedelta 对象。 创建一个真实的 JWT 访问令牌并返回它。...这样就完成了:使用(哈希)密码和 JWT Bearer 令牌的 OAuth2。
概要 之前的两篇文章,讲述了Spring Security 结合 OAuth2 、JWT 的使用,这一节要求对 OAuth2、JWT 有了解,若不清楚,先移步到下面两篇提前了解下。...Spring Boot Security 整合 OAuth2 设计安全API接口服务 Spring Boot Security 整合 JWT 实现 无状态的分布式API接口 这一篇我们来实现 支持 JWT...令牌 的授权服务器。...优点 使用 OAuth2 是向认证服务器申请令牌,客户端拿这令牌访问资源服务服务器,资源服务器校验了令牌无误后,如果资源的访问用到用户的相关信息,那么资源服务器还需要根据令牌关联查询用户的信息。...所以,如果我们在使用 OAuth2 时结合JWT ,就能节省集中式令牌校验开销,实现无状态授权认证。