【发布时间】:2019-01-03 05:48:29
【问题描述】:
我的 Identity Server 4 运行正常,为 MVC 应用程序执行本地身份验证工作正常。我还需要添加对外部 IDP 的支持,因此我按照文档中的说明进行操作,并以快速入门代码为基础。因此,它当前配置为使用https://demo.identityserver.io 的演示 IDP 作为外部 IDP,并且可以正常登录 - 用户被重定向到外部 IDP 以输入他们的详细信息,我的身份验证服务器返回一个带有用户 ID(主题)的 id_token我匹配我们自己的用户存储库中的用户。然后我们的身份验证服务器按照正常情况继续登录,发出自己的令牌等 - 到目前为止一切都很好。
我遇到的问题是从外部 IDP 注销 - 如果用户直接从 demo.identityservier.io IDP 注销,我需要确保此过滤器返回以清除存储的身份验证 cookie,从而要求用户如果他们尝试访问应用中受保护的页面,请重新登录。
如果用户从我们自己的 ID 服务器注销(即 ID 服务器显示的注销页面具有确保 MVC 应用程序得到整理的内置 iframe),这可以正常工作。对于外部 IDP,我会期待类似的事情,但看不到任何东西。
这是在我们的本地 IDP 启动中注册外部 IDP 的启动配置。
.AddOpenIdConnect("Ext_oidc", "Ext OpenID Connect", options =>
{
options.SignInScheme = IdentityServerConstants.ExternalCookieAuthenticationScheme;
options.SignOutScheme = IdentityServerConstants.SignoutScheme;
options.Authority = "https://demo.identityserver.io/";
options.ClientId = "implicit";
options.ResponseType = "id_token";
options.TokenValidationParameters = new TokenValidationParameters
{
NameClaimType = "name",
RoleClaimType = "role"
};
});
任何建议都将受到欢迎
【问题讨论】:
标签: single-sign-on openid identityserver4 openid-connect