IdentityServer3 PublicOrigin和IssuerUri IdentityServerOptions中的区别和用法

时间:2017-08-18 02:32:30

标签: identityserver3 identityserver4

部署到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相同。我已阅读有关此文档的文档。从技术上讲,这只是对属性的描述。我想了解更多。

非常感谢。

1 个答案:

答案 0 :(得分:3)

IssuerUri是授权服务器的唯一标识符。此属性的值嵌入到iss属性中的ID令牌中,并且在令牌验证期间。

另一方面, PublicOrigin只是服务器的公共URI 。如果服务器位于反向代理之后,则在没有此提示的情况下,它将在OpenID Connect元数据(.well-known/openid-configuration)中通告私有URI。

为什么不只有单一属性? OpenID Connect规范(§ 16.15. Issuer Identifier)支持多个发布者驻留在同一主机和端口上。但是,规范中的相同部分建议每个主机和端口(即单租户)仅托管一个发行者。

您何时会使用多租户架构?假设您要构建和销售自己的身份验证即服务。现在,您有两种选择 - 为每位客户分配专用URI(PublicOrigin),或为每位客户使用专用PublicOrigin的单IssuerUri