如何将多个 acr_values 传递给 IdentityServer?
Posted
技术标签:
【中文标题】如何将多个 acr_values 传递给 IdentityServer?【英文标题】:How can I pass multiple acr_values to IdentityServer? 【发布时间】:2019-07-10 23:16:11 【问题描述】:我有一个 IdentityServer4 和一个 javascript 客户端,它们使用 oidc-client.js 库向我的 IdentityServer 进行身份验证。我有一个特定的情况,我需要传递两个 acr 值:idp:providerName
和 tenant:tenantName
。
在配置对象中使用 oidc-client.js 库,我将 arc_values 字符串传递为acr_values: "tenant:lado"
或acr_values: "idp:Google"
。如果我尝试发送字符串列表acr_values: ["idp:Google","tenant:lado"]
并尝试在 IdentityServer 中访问它,我只会得到租户并且它的值是:Google,tenant:lado
。如您所见,仅检测到 idp,但它合并了所有内容。如何实现发送 2 个单独的 acr_values 的预期效果?
【问题讨论】:
【参考方案1】:acr 值必须以空格分隔为单个字符串,例如:“idp:Google tenant:lado”。这也在“acr_values”请求参数列表下的规范here 中进行了描述。
第一个冒号之后的所有内容都被解析为“idp”acr 值的原因是,oidc 客户端库使用“encodeURIComponent”序列化数组,并导致数组值使用逗号分隔符连接。 IdentityServer 在解析 acr 值时假设它们是空格分隔的,因此它无法将值分开。
【讨论】:
以上是关于如何将多个 acr_values 传递给 IdentityServer?的主要内容,如果未能解决你的问题,请参考以下文章