IdentityServer3:如何将ClientSecret分配给MVC客户端?

时间:2016-07-19 21:58:46

标签: identityserver3

我已使用EF和AspNetIdentity配置IdentityServer3。我有3个MVC客户端应用程序。所有用户和客户端都在SQL DB中配置。我能够让它工作,用户现在可以登录。

现在我正试图在客户端和附近添加一些安全性。用户和我几乎没有相关的问题

1> MVC客户端只适用于Implicit Flow吗?我有MVC客户端,下面是它的OWIN启动。

    public class Startup
    {
        public void Configuration(IAppBuilder app)
        {
            app.UseCookieAuthentication(new CookieAuthenticationOptions
            {
                AuthenticationType = "Cookies"
            });

            app.UseOpenIdConnectAuthentication(new OpenIdConnectAuthenticationOptions
            {
                Authority = "https://localhost:44314/identity",
                Scope = "openid",
                ClientId = "LocalHostMvcClient",
                RedirectUri = "http://localhost:34937/",
                ResponseType = "id_token",
                SignInAsAuthenticationType = "Cookies"                 
            });
        }
    }

在IdentityServer上,当我将LocalHostMvcClient的流量更改为任何流量(除“隐式”之外)时,客户端会收到错误The client application is not known or is not authorized.。所以它看起来像MVC客户端     它只适用于Implicit流程。     这是真的吗?

2 - ; ClientSecret与Implicit流量无关吗?    我想使用ClientSecret,但看起来它与Implicit流无关。基于documentation ClientSecret仅与需要保密的流相关。如果回答问题1是真的那么这是否意味着我不能将ClientSecret与Implicit Flow一起使用?

第3>如果我有多个客户端和用户。我们可以将用户分配给特定客户吗?    例如,如果我有3个客户,www.client1.com,www.client2.com,www.client3.com和2个用户User1,User2。我希望User1只能登录www.client1.com 这可能吗?

1 个答案:

答案 0 :(得分:1)

  1. ASP.NET MVC可以使用任何OpenID Connect流程。您收到的错误是由于客户端应用程序请求某些不允许的内容或以某种方式错误配置。启用Identity Server中的日志记录,它很快就会告诉您原因。
  2. 客户端密钥未在Implicit中使用,因为隐式依赖于请求网址,而不是任何类型的显式授权。这就是它对客户端语言有用的原因。
  3. 这是授权逻辑,应在客户端应用程序中处理。例如,当他们登录时,他们将被显示为未经授权的'页。 Identity Server仅用于身份验证。