我们如何启用 SSO 身份服务器 4?

Mus*_*.BA 3 c# .net-core identityserver4

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

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

小智 5

每个应用程序都是一个客户端。但是否应该使用相同的 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 仍然可行,但您最好使用推荐的授权类型之一。