Microsoft IIS无需编码支持JWT Token的类似mod_Authnz_jwt模块问询
IIS JWT校验模块方案说明
是存在对应功能的IIS模块的,无需编写任何业务代码即可实现静态网页的JWT防护,能力和Apache的mod_Authnz_jwt基本对齐。
官方推荐方案:IIS 官方 JWT Authentication 模块
该模块是微软官方推出的原生IIS扩展,适配IIS 10 1709及以上版本,所有配置操作都可以通过IIS管理器图形界面完成,也可以直接修改站点根目录下的web.config文件生效,核心能力包括:
- 支持HS256、RS256等主流JWT签名算法的校验,兼容绝大多数身份提供商签发的JWT令牌
- 可自定义校验规则:支持issuer、audience、过期时间等标准JWT字段的校验,也可自定义claim校验规则
- 支持多位置读取令牌:可配置从Authorization请求头(Bearer模式)、Cookie、自定义查询参数中读取JWT
- 支持路径粒度的权限控制:可指定只对部分静态资源路径开启JWT校验,公开资源路径可直接放行
- 校验失败自动返回401/403状态码,无需额外编写错误处理逻辑
典型的最小配置web.config示例如下:
<configuration> <system.webServer> <security> <authentication> <jwtAuthentication enabled="true"> <providers> <add name="StaticSiteJwtProvider" issuer="你的JWT签发方地址" audience="你的站点标识" symmetricKey="Base64编码的签名密钥" /> </providers> </jwtAuthentication> </authentication> <authorization> <add accessType="Deny" users="?" /> </authorization> </security> </system.webServer> </configuration>
低版本IIS适配方案
如果你使用的是低于10 1709版本的IIS,可以使用第三方开源的IIS JWT模块,配置逻辑和官方模块基本一致,同样不需要编写代码,仅通过配置即可完成JWT校验规则的定义,完全覆盖静态网页的防护需求。
注意事项
- 若使用非对称签名的JWT,仅需配置公钥即可完成校验,无需存储私钥,安全逻辑和
mod_Authnz_jwt对齐 - 校验通过后可配置将JWT中的自定义claim注入到请求头中,方便后续有动态逻辑的场景使用
- 所有静态资源请求会在IIS返回静态内容之前完成JWT校验,不会出现未授权用户访问到静态网页的情况
内容的提问来源于stack exchange,提问作者Tommie Jones
相关产品推荐
相关产品推荐

