如何将多个 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:providerNametenant: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?的主要内容,如果未能解决你的问题,请参考以下文章

如何将多个复选框传递给动作

如何使用向量将多个字符串传递给函数

django - 如何将多个值传递给模板标签

如何将多个 PHP 变量传递给 jQuery 函数?

如何将 loginViewFetchedUserInfo: 中的信息一次传递给多个视图

如何使用 React 中的 CSS 模块将多个类动态传递给子组件