如何修改Azure AD B2C的Token exp声明值并设置1小时有效期?
如何在Azure中创建有效期为1小时的JWT令牌?
我帮你梳理下具体的解决步骤,针对你遇到的“门户显示60分钟但设置未生效”的问题,大概率是设置位置不对或者有其他策略覆盖,你可以按下面的步骤排查:
一、确认你修改的是对应令牌的正确设置项
登录Azure门户后,按以下路径操作:
- 进入Azure Active Directory → 应用注册,找到你的目标应用。
- 切换到令牌配置选项卡:
- 如果还没添加过令牌设置,点击“添加配置”,选择你要设置的令牌类型(访问令牌/ID令牌),然后把“生命周期(分钟)”设为60,保存。
- 如果已经有对应的配置,点击编辑按钮,直接修改生命周期为60后保存。
- 划重点:访问令牌和ID令牌是分开设置的,别只改其中一个哦!
二、检查是否有全局/条件访问策略在搞事情
有时候全局策略会覆盖单个应用的设置,你可以检查这两个地方:
- 进入Azure Active Directory → 安全性 → 条件访问,看看有没有针对该应用的策略,限制了令牌的有效期。如果有的话,调整对应策略的会话超时设置。
- 另外,去Azure AD → 企业应用 → 找到你的应用 → 属性,查看“会话超时”选项,这个也可能影响令牌的实际有效期。
三、修改后一定要重新获取令牌!
很多人踩过这个坑:修改完设置后,用之前的旧令牌测试,当然还是原来的有效期。你需要重新发起授权请求(比如授权码流重新拿授权码换令牌,客户端凭据流重新调用令牌接口),新生成的令牌才会应用新的生命周期。
四、如果是用Azure AD B2C自定义策略的情况
要是你是通过B2C自定义策略颁发令牌,那得修改策略XML文件:
找到<TechnicalProfile>里的JwtIssuer节点,添加或修改AccessTokenLifetime参数:
<TechnicalProfile Id="JwtIssuer"> <Metadata> <Item Key="AccessTokenLifetime">PT1H</Item> <!-- PT1H代表1小时,时间格式遵循ISO 8601 --> </Metadata> </TechnicalProfile>
修改完后重新上传策略到Azure B2C,再测试新令牌。
五、验证令牌是否生效
拿到新令牌后,用本地的JWT解码工具(别用在线工具,避免泄露敏感信息)查看exp(过期时间)和iat(签发时间)字段,计算两者的时间差,确认是不是刚好3600秒(1小时)。
内容的提问来源于stack exchange,提问作者user9402642
相关产品推荐
相关产品推荐

