JWT通常有两种应用场景: 授权。这是最常见的JWT使用场景。一旦用户登录,每个后续请求将包含一个JWT,作为该用户访问资源的令牌。 信息交换。...本文讨论第一点,如何利用JWT来实现对API的授权访问。这样就只有经过授权的用户才可以调用API。 JWT的结构 ? JWT由三部分组成,用.分割开。...应用程序或客户端向授权服务器请求授权。这里的授权服务器可以是单独的一个应用,也可以和API集成在同一个应用里。 授权服务器向应用程序返回一个JWT。...在JAVA里使用JWT 引入依赖 ? 这里使用了一个叫JJWT(Java JWT)的库。 JWT Service ? 生成JWT这里设置过期时间为10秒,因此生成的JWT只在10秒内能通过验证。...如果使用Filter,那么刷新的操作要在调用doFilter()之前,因为调用之后就无法再修改response了。 API ? 这时候API就处于JWT的保护下了。
此类攻击不依赖凭据窃取,而是滥用OAuth 2.0授权框架中的“用户同意”流程,使恶意应用获得长期有效的刷新令牌(refresh token),进而通过Microsoft Graph API静默读取邮件...关键词:OAuth 同意滥用;假冒微软应用;Entra ID;多因素认证绕过;Graph API;条件访问1 引言多因素认证(MFA)作为现代身份安全的核心防线,已在绝大多数企业环境中广泛部署。...2 攻击技术原理与实施路径2.1 OAuth 2.0 用户同意机制回顾在Microsoft Entra ID中,第三方应用若需访问用户资源(如邮件、日历),必须通过OAuth 2.0授权码流程获取权限。...;应用用授权码向令牌端点兑换访问令牌与刷新令牌;应用使用令牌调用Microsoft Graph API。...3.3 缺乏应用行为基线监控SIEM系统通常未将“新应用首次访问Graph API”与“大量邮件读取”关联分析。即使启用日志,也因数据量庞大而忽略异常。3.4 审计滞后企业极少定期审查已授权应用列表。
OAuth 2.0作为现代身份联合与资源授权的标准协议,在Microsoft Entra ID中被广泛用于第三方应用集成。用户通过一次授权操作,即可授予外部应用对其邮箱、日历、文件等资源的访问权限。...该机制极大提升了用户体验,但也引入了新的攻击面:若用户被诱导授权一个恶意应用,攻击者即可绕过所有基于密码和MFA的验证环节,直接通过合法API接口操作账户。...(Access Token)与刷新令牌(Refresh Token);应用使用令牌调用Microsoft Graph API。...攻击者使用refresh_token定期换取新access_token,实现长期潜伏。所有API调用均来自微软合法IP,难以被网络层检测。...3.4 数据窃取与横向移动获得令牌后,攻击者可调用Microsoft Graph API执行以下操作:# 读取最新100封邮件Invoke-RestMethod -Uri "https://graph.microsoft.com
其核心价值在于解耦资源所有者(用户)与客户端应用之间的凭证传递,转而依赖短期有效的访问令牌(Access Token)与长期有效的刷新令牌(Refresh Token)完成资源访问。...此类攻击具备高度隐蔽性:因全程使用标准OAuth流程,流量特征与正常业务无异;且一旦授权成功,攻击者可绕过MFA持续访问邮箱、日历、OneDrive等敏感资源,甚至利用被控账户横向扩散。...向令牌端点换取访问令牌与刷新令牌;Client使用访问令牌调用受保护资源(如Microsoft Graph API)。...获得令牌后,攻击者通过Microsoft Graph API执行侦察:import requeststoken = "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.xxxxx"headers...以下Python脚本利用Microsoft Graph API实现自动化审计:import requestsfrom datetime import datetime, timedeltadef audit_shadow_apps
请访问 https://aka.ms/devicelogin,输入以下代码:**ABCD-EFGH**。”...授权完成后,攻击者的服务器立即通过 OAuth 2.0 的 /token 端点兑换访问令牌和刷新令牌(Refresh Token),从而获得对受害者邮箱、日历、文件等资源的长期访问权——全程无需知道密码..."❌ 授权失败:", token_resp.text)break一旦拿到 access_token,攻击者即可调用 Microsoft Graph API 执行任意操作:# 示例:读取受害者最近10封邮件...Proofpoint 发现,部分攻击甚至持续数周未被发现——因为所有操作都通过合法 API 进行,IP 地址来自正常办公区域(攻击者使用代理或已控跳板机),行为模式与日常办公高度相似。...必须教育员工:任何要求你访问 aka.ms/devicelogin 的请求都需先联系 IT 确认;授权前务必点击“查看此应用将访问哪些数据”;若未主动发起设备登录,绝不要输入任何代码。
、Gmail API等,读取联系人、邮件、日历,甚至发送钓鱼邮件扩大攻击面。...2.4 后渗透与持久化获得初始访问权限后,UTA0355采取多项措施维持访问:在Microsoft Entra ID中注册伪装设备,名称模仿用户真实主机(如“Johns-MacBook-Pro”);使用...以下Python脚本利用Google Admin SDK Directory API列出某用户的所有OAuth客户端授权:from googleapiclient.discovery import builddef...API支持查询用户授予的同意记录:GET https://graph.microsoft.com/v1.0/me/oauth2PermissionGrantsAuthorization: Bearer...3.3 用户行为验证与安全缓冲区对于必须参与外部会议的员工,建议:使用专用邮箱(如events@company.com)进行注册,隔离主账户风险;手动访问会议官网(通过搜索引擎或官方社交媒体)而非点击邮件链接
比如,一封看似来自“IT部门”的邮件写道:“为提升协作效率,请授权‘TeamSync Pro’访问您的日历和邮件。”...公共互联网反网络钓鱼工作组技术专家芦笛指出,“而Microsoft 365因其广泛使用和强大API能力,成了攻击者的首选目标。”...它不依赖外部SaaS服务,而是直接调用Microsoft Graph API,实时扫描租户内的高风险行为:检测异常收件箱规则:如自动转发至外部域名、删除特定关键词邮件等;识别可疑OAuth应用授权:尤其是请求...技术内核:Graph API + 自动化剧本 = 主动防御要理解这款工具为何有效,得先了解Microsoft 365的安全架构。...微软通过Microsoft Graph API开放了对用户邮箱、日历、设备、身份等数据的编程访问接口。
上@luoye663开发的一个在线续期项目,它搭建在作者的服务器上,需要根据教程配置应用的api和key,之后访问并登陆作者搭建好的网站(使用Github账号),授权其实用你的应用客户端即可。...所需配置 账户名称+账户密码+应用程序(客户端)ID 账户名称+客户端机密+应用程序(客户端)ID 功能影响 程序中所有API均可调用 部分API权限受限无法调用(官方限制) API权限配置 可由PC...,授权后则可再次尝试调用响应 Postman 是一个可用于向 Microsoft Graph API 发出请求的工具:Postman&Microsoft Graph API使用 ...c.Microsoft Graph 快速入门示例 Microsoft Graph入门: a.选择语言或平台 b.获取应用 ID(客户端 ID) c.生成示例 d.登录,然后查看日历上的事件 PHP...key:generate 启动 Web 服务器 php artisan serve 访问 http://localhost:8000 JAVA示例 Microsoft Graph & Java
开发流程 向 Azure Active Directory (AAD) 注册的客户端 ID 和密钥(客户端密码) 从 OAuth 2 授权代码流收到的授权代码 OneDrive for Business...API 终结点 URL OneDrive for Business 资源的访问令牌 在当前令牌到期时生成其他访问令牌的刷新令牌。...onedrive for business使用的是标准的Oauth2流程,所以大概流程就是先获取code,使用code交换access_token,然后就可以调用api了,这里先贴出获取code以及交换...self.redirect_uri, 'client_secret': self.client_secret, 'code': code, 'grant_type': 'authorization_code...onedrive的请求api是https://graph.microsoft.com/v1.0/me/drive,但是文档中以及网上教程写的是https://graph.microsoft.com/me
最近我们的一些项目因为微信页面授权能力的调整出现了一些问题,对于新用户未经授权前,微信开发团队给出的输出是快照页,该页内所获取的openId等均为虚拟账号数据,并在屏幕下方非常不明显的显示“使用完整服务...”,如下图所示: 此图即是微信给出的授权提示,也是我们折中的解决方案,图中所示的提示框源自己于我们通过携带的参数反馈给用户的提示,以引导用户点击下方的“使用完整服务”链接,并进行授权。...常见的微信网页授权不规范使用案例 强制登录:在用户打开网页时立即要求用户授权,用户拒绝后无法使用网页提供的服务; 违规收集个人信息:未在网页提前告知使用个人信息的目的、方式和范围; 非必要收集:非必要获取用户信息的网页...,如文章、视频等,要求用户在浏览内容前登录; 差别对待微信用户:同样的网页在浏览器内可以无需登录直接访问,在微信内却要求用户先登录才可访问。...原有运行方案 微信OA2授权访问地址如下(示例url为C#字符串): https://open.weixin.qq.com/connect/oauth2/authorize?
我们允许所有用户访问/login/**,并对其他所有请求进行身份验证。我们还使用.oauth2Login()配置了OAuth2登录流程。...我们指定客户端ID为“github”,授权类型为“authorization_code”,并指定要获取的权限范围和重定向URI。最后,我们需要定义一个Controller来访问受保护的资源。...我们使用OAuth2AuthenticationToken获取OAuth2AuthorizedClient,并使用它来获取访问令牌和用户信息终端点URI。...现在,我们可以使用http://localhost:8080/api/github/user来访问受保护的GitHub API。...如果用户已经通过OAuth2登录,并且已经授权了我们的应用程序,则可以成功访问该资源。如果用户没有登录或未授权,则将重定向到OAuth2提供程序的登录页面。
1.Oauth(开放授权)是一个开放标准,允许用户让第三方应用访问该用户在某一网站上存储的私密资源(如照片,视频,联系人列表),而无需将用户名和密码提供给第三方 关键字:appKey appSecret...token(令牌) 2.SSO授权 如果本地手机装有微博客户端,则直接跳转到微博客户端,只需点击授权按钮,就可以登陆了 qq第三方登陆使用Oauth2.0实现,测试代码 点击下面的连接 https:/.../graph.qq.com/oauth2.0/authorize?...action)){ Sso::$action(); return; } $par = 'grant_type=authorization_code...) { parse_str($rec, $accessToken); $openidJson=Sso::getUrlContents("https://graph.qq.com
Console 、API 和 Web Service 被统称为 Client API。...角色划分 Nebula Graph 提供了五种操作角色,分别是 GOD、ADMIN、DBA、USER、GUEST,这五种操作角色基本覆盖了所有的数据安全控制的场景。...ADMIN:基于 Space 的高级管理员,拥有此 Space 之内的所有管理权限,但对整个集群则没有管理权限。...和 ADMIN 的区别是 DBA 不能对某个 Account 进行授权操作,但 ADMIN 可以。 USER:普通的数据库使用角色。可读写 Data,可读 Schema 但没有写权限。...GUEST:访问者角色,对权限内 Space 的 Schema 和 Data 有只读权限。
由于 UAA 既充当帐户存储又充当授权服务器,因此许多不同类型的信息都链接到用户,并且可以通过以用户为中心的 API 调用进行访问。...您可以使用 UAA 配置文件在 UAA 中定义客户端,也可以使用 UAA API 创建客户端。 6.1. 选择授权授予类型 要创建客户端,开发人员必须指定使用其客户端应允许的授权类型。...UAA 上可用的授权类型包括: authorization_code:授权码 password:密码 implicit:隐含式 client_credentials:客户端凭据 为了提高安全性,请仅使用您的应用所需的授权类型...用户批准请求的范围后,它们将使用 URL 参数中的授权代码重定向回客户端应用程序。然后,客户端应用可以与 UAA 交换授权码以获得访问令牌。...客户端应用假定此共享是对客户端要在访问令牌中填充的范围的隐式批准。 两种授权类型,authorization_code 和 implicit 类型需要特定的用户批准才能将范围填充到访问令牌中。
如https://microsoft.com/devicelogin),输入user_code;授权服务器验证用户身份(通常包括MFA)后,将授权授予客户端;客户端通过轮询使用device_code换取访问令牌...一旦授权完成,攻击者即可通过device_code兑换令牌,获得与用户同等的API访问权限。...API,读取邮件、日历、联系人,甚至创建新应用或修改权限。...随后,攻击者可使用该令牌调用Graph API:# Example: Read user's mailboxheaders = {'Authorization': f'Bearer {token_json...即使用户撤销授权,若攻击者已导出refresh_token,仍可续期访问。
一旦授权成功,即使用户更改密码或启用MFA,攻击者仍可通过已授权的应用持续访问邮箱、日历、文件等敏感资源。...(App Consent Policy):禁止用户自主同意第三方应用,所有授权请求必须经IT审批;监控异常授权行为:通过Microsoft Defender for Cloud Apps或自建SIEM规则...,检测以下信号:新注册应用请求高权限;用户短时间内多次授权不同应用;授权后立即调用高风险API(如批量导出邮件)。...(二)策略管理层:建立授权生命周期管理定期授权审计:每季度导出全组织应用授权清单,清理未使用或来源不明的应用;实施最小权限原则:推动业务部门使用权限更细的现代API(如Microsoft Graph的delegated...permissions with scopes);自动化撤销机制:当检测到可疑活动时,自动调用Microsoft Graph API撤销相关应用授权:# 使用Microsoft Graph API撤销用户授权
oauth授权 OAuth是一种授权机制,用于允许用户(资源所有者)向第三方应用程序授予有限的访问权限,而不必将凭证直接提供给第三方应用程序。...它通过一个流程,将用户授权给第三方应用程序访问用户的资源,而不需要第三方应用程序获得用户的凭证信息。这样做可以减少用户数据泄露的风险。...OAuth是一个开放的标准,由OAuth工作组维护,并得到许多组织的支持和使用。...使用openid去注册网站用户,显示nickname网名 ⭐技术选型+实现 技术选型: 后端:node 前端:vue2 后端node封装qq相关的oauth2.0接口 service/api.js const...='https://graph.qq.com/oauth2.0/token' const openIdUrl='https://graph.qq.com/oauth2.0/me' const userInfoUrl
t=resource/res_main&id=mp1421140842 官方流程 网页授权流程分为四步: 1、引导用户进入授权页面同意授权,获取code 2、通过code换取网页授权access_token...2、用户访问第三方页面时,先去请求一个api,获取code和state code说明 : code作为换取access_token的票据,每次用户授权带上的code将不一样,code只能使用一次,5分钟未被使用自动过期...请求API参数拼接 https://open.weixin.qq.com/connect/oauth2/authorize?...获取code后,请求以下链接获取access_token: https://api.weixin.qq.com/sns/oauth2/access_token?...appid=APPID&secret=SECRET&code=CODE&grant_type=authorization_code 代码段 @SuppressWarnings("null") @
(微信做了限制,只能在第三方平台在设置的回调url地址才可以访问,其他本地地址无效) 后端返回的参数 'component_appid' => 'XXX', //第三方平台app_id 'pre_auth_code...回调地址处理授权信息 这个回调地址是在第三方平台上设置的,拿到授权码(auth_code)后,使用授权码换取公众号或小程序的接口调用凭据和授权信息。...* @desc 微信授权 * 授权后回调URI,得到授权码(authorization_code)和过期时间10分钟,使用授权码换取公众号或小程序的接口调用凭据和授权信息...100202); } //获取第三方平台的接口调用凭证 $comAccToken = $this->getComAccessToken(); //使用授权码换取公众号或小程序的接口调用凭据和授权信息...= 'https://api.weixin.qq.com/cgi-bin/component/api_get_authorizer_info?
协议参与者 OAuth的参与实体至少有如下三个: RO (resource owner): 资源所有者,对资源具有授权能力的人。如上文中的用户Alice。...其中最核心、最难理解、也是最广泛使用的一种授权类型——“授权码” 1.2.3....(3) 若请求被批准,AS使用步骤(1)中Client提供的redirect_uri重定向RO用户代理到Client。...(4) Client拿authorization_code去访问AS以交换所需的access_token。...(5) AS在收到authorization_code时需要验证Client的身份,并验证收到的redirect_uri与第3步请求authorization_code时所使用的redirect_uri