只需使用Identity Server 3单点登录?

时间:2015-08-12 08:51:28

标签: asp.net security asp.net-web-api thinktecture-ident-server openid-connect

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

  1. 我需要多少范围/声明,或者我不需要范围/声明? web api只需要知道ASP.NET身份表中保存的用户ID,用户角色和用户声明。
  2. 我的客户(本机应用)应该从SSO服务器请求哪些范围?
  3. 在向我的后端ASP.NET web-api发送请求时,它们是否应在Authorization标头中包含id_token或access_token?
  4. 现在我的后端ASP.NET web-api应该包含哪些范围?我的意思是我应该把它放在这里,

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

1 个答案:

答案 0 :(得分:2)

  1. 这取决于您对API空间进行分区的方式 您的API需要了解哪些有关用户的信息。
  2. 您的客户应该请求调用api所需的范围 并完成工作。例如。假设您已将API分区为 两部分[读,写]。假设你的客户只是去 从API读取数据,然后您可以注册您的客户端 身份服务器只具有读取范围。那你应该要求 仅从Identity Server读取此客户端的范围。
  3. 只有Access_Token才能包含在授权标题
  4. 这应该用于验证传入令牌。它检查是否 传入令牌包含给定的范围。你可以跳过 声明此处并在API控制器方法中使用属性 同样。
  5. Https是Identity Server必须的。签署证书即可 与Https证书不同。签名证书用于 Https用于传输安全性时进行令牌签名