如何在FoxIDs生成的SAML AuthnRequest中添加AppSwitch属性?
在FoxIDs中为SAML请求添加NemLog-in AppSwitch扩展
要在FoxIDs生成的SAML AuthnRequest中添加NemLog-in要求的AppSwitch扩展,可通过以下几种方式实现:
1. 静态配置自定义SAML扩展
直接在FoxIDs管理后台的SAML IdP连接中配置固定的扩展内容:
- 登录FoxIDs管理界面,找到对接NemLog-in的SAML IdP连接
- 进入该连接的配置页面,找到「SAML请求设置」区域的「自定义扩展」选项
- 将以下XML片段填入扩展配置框:
<nl:AppSwitch xmlns:nl="https://data.gov.dk/eid/saml/extensions"> <nl:Platform>Android</nl:Platform> <nl:ReturnURL>dk.serviceprovider.test</nl:ReturnURL> </nl:AppSwitch> - 保存配置后,FoxIDs后续生成的所有SAML AuthnRequest都会自动包含这个
AppSwitch扩展节点
2. 动态生成扩展(支持多平台/动态ReturnURL)
如果需要根据前端请求的参数动态调整Platform或ReturnURL,可以使用FoxIDs的**规则(Rules)**功能实现:
- 在FoxIDs管理界面创建一条新规则,选择关联到对应的OIDC客户端或SAML IdP连接
- 编写C#规则脚本,从OIDC请求的自定义参数中取值,动态构建
AppSwitch扩展:// 从OIDC请求的查询参数中获取平台和返回地址(可根据实际传参方式调整) var platform = Context.Request.GetQueryParam("platform") ?? "Android"; var returnUrl = Context.Request.GetQueryParam("return_url") ?? "dk.serviceprovider.test"; // 构建符合NemLog-in要求的AppSwitch XML var appSwitchExtension = $@" <nl:AppSwitch xmlns:nl=""https://data.gov.dk/eid/saml/extensions""> <nl:Platform>{platform}</nl:Platform> <nl:ReturnURL>{returnUrl}</nl:ReturnURL> </nl:AppSwitch>"; // 将扩展添加到SAML认证请求的Extensions节点中 Context.SamlAuthnRequest.Extensions.Add(appSwitchExtension); - 保存规则并启用,之后FoxIDs会根据请求参数动态生成对应的
AppSwitch扩展
3. 验证配置效果
配置完成后,可通过以下方式验证:
- 发起认证流程,使用抓包工具(如Fiddler、Charles)捕获SAML AuthnRequest,确认
<samlp:Extensions>节点下存在完整的AppSwitch内容 - 查看FoxIDs的日志记录,在「SAML请求」日志中检查扩展节点是否正确添加
内容的提问来源于stack exchange,提问作者Vladimir
相关产品推荐
相关产品推荐

