仅使用 Identity Server 3 进行单点登录?

Just Single Sign on using Identity Server 3?

我们正在创建 8 个本机应用程序(IOS、Android,可能是 windows)。所有这些本机应用程序都 back-end api 使用 ASP.NET Web Api 构建。现在我正在尝试使用 IdentityServer3 (https://github.com/IdentityServer/IdentityServer3) 构建单点登录。我的用户数据保存在 ASP.NET Identity 2 中。我只需要验证 username/password(无外部身份验证)。现在我的困惑是

  1. 我需要多少 scopes/claims 或不需要 scopes/claims?网络 api 只需要知道保存在 ASP.NET 身份表中的 user-id、user-roles 和 user-claims。
  2. 我的客户端(本机应用程序)应该从 SSO 服务器请求什么范围?
  3. 在向我的 back-end ASP.NET web-api 发送请求时,他们是否应该在授权 header 中包含 id_token 或 access_token?
  4. 现在我的back-endASP.NETweb-api应该包括哪些范围?我的意思是我应该放在这里,

    app.UseIdentityServerBearerTokenAuthentication(new IdentityServerBearerTokenAuthenticationOptions
                {
                    Authority = "https://localhost:44333/core",
                    RequiredScopes = new[] { XXXXXX }
                });
    
  5. SSO 服务器是否需要 https?什么是 SigningCertificate?它与https证书有什么关系?

  1. 这取决于您将如何划分 API space 和 您 API 需要了解有关用户的哪些信息。
  2. 您的客户应该请求他们调用 api 所需的范围 并完成工作。例如。假设您已将 API 划分为 两部分[读,写]。然后假设您的客户只会 从 API 中读取数据,然后您可以在其中注册您的客户端 身份服务器只有读取范围。那么你应该要求 仅从该客户端的 Identity Server 读取范围。
  3. 只有 Access_Token 应包含在授权中 header
  4. 这应该是为了验证传入的令牌。它检查是否 传入令牌包含给定的范围。你可以跳过 在此处声明并在 API 控制器方法中使用属性 还有。
  5. Https 是 Identity Server 所必需的。签名证书可以是 不同于 HTTPS 证书。签名证书用于 令牌签名,而 Https 用于传输安全