部署到IIS时遇到了一些问题。显然,客户端使用反向代理和所有OpenId配置disco显示IP地址而不是他们的域名。 PublicOrigin
解决了我的问题。但是,我仍然不了解它们之间的差异,
PublicOrigin
和
IssuerUri
示例:
var options = new IdentityServerOptions
{
PublicOrigin = "https://myids/project1/",
IssuerUri = "https://myids/project1/",
...
}
我可以从迪斯科舞厅看到变化,如果两个值分别更新,即;
{
"issuer": "https://myids/project1/",
"jwks_uri": "https://myids/project1/.well-known/jwks",
"authorization_endpoint": "https://myids/project1/connect/authorize",
"token_endpoint": "https://myids/project1/connect/token",
"userinfo_endpoint": "https://myids/project1/connect/userinfo",
"end_session_endpoint": "https://myids/project1/connect/endsession",
"check_session_iframe": "https://myids/project1/connect/checksession",
"revocation_endpoint": "https://myids/project1/connect/revocation",
"introspection_endpoint": "https://myids/project1/connect/introspect",
...
}
为什么不将它与IssuerUri相同。我已阅读有关此文档的文档。从技术上讲,这只是对属性的描述。我想了解更多。
非常感谢。
答案 0 :(得分:3)
IssuerUri
是授权服务器的唯一标识符。此属性的值嵌入到iss
属性中的ID令牌中,并且在令牌验证期间。
另一方面, PublicOrigin
只是服务器的公共URI 。如果服务器位于反向代理之后,则在没有此提示的情况下,它将在OpenID Connect元数据(.well-known/openid-configuration
)中通告私有URI。
为什么不只有单一属性? OpenID Connect规范(§ 16.15. Issuer Identifier)支持多个发布者驻留在同一主机和端口上。但是,规范中的相同部分建议每个主机和端口(即单租户)仅托管一个发行者。
您何时会使用多租户架构?假设您要构建和销售自己的身份验证即服务。现在,您有两种选择 - 为每位客户分配专用URI(PublicOrigin
),或为每位客户使用专用PublicOrigin
的单IssuerUri
。