首页 > 解决方案 > 我们如何启用 SSO 身份服务器 4?

问题描述

我应该只创建一个客户端并且我的所有应用程序都必须使用它连接到身份服务器,还是应该进行配置以使其工作?

Identity Server 是 Web API,授权类型是“资源所有者密码”。

标签: c#.net-coreidentityserver4

解决方案


每个应用程序都是一个客户端。但是是否应该使用相同的 client_id 取决于您。我个人对应用程序的每个实例使用不同的 client_id。这有助于我识别实例并允许我为每个实例使用不同的秘密。而且我认为当您使用刷新令牌时,client_id 必须是唯一的。

SSO 是您在使用 OpenId Connect (oidc) 时免费获得的。由于 IdentityServer 网站上有一个 cookie,它可以工作:

当用户必须登录时,用户将被重定向到 IdentityServer 网站,在该网站(成功验证后)设置了一个 cookie,其中包含有关用户身份的信息。

当用户返回到客户端时(成功认证后),客户端也会设置一个 cookie。只要此身份验证 cookie 可用,用户就会登录。

当用户需要再次登录时,由于客户端(不再)无法验证用户身份,IdentityServer 将尝试使用 IdentityServer 网站上 cookie 中的信息来识别用户,并(如果成功)自动登录用户,跳过登录表单。


但是您的设置似乎与oidc无关。当您说 IdentityServer 是一个 Web Api 时,这表明用户没有被重定向到 IdentityServer 进行登录,这意味着没有机会设置 cookie。

资源所有者密码凭证 (ROPC) 是一种 OAuth2 授权类型。这表明用户在客户端上执行登录。

为了启用 SSO,用户必须登录 IdentityServer 网站。虽然 ROPC 仍然可行,但您最好使用推荐的授权类型之一。


推荐阅读