我必须使用Identity Server时登录到每个Web应用程序?(Do I have to lo

2019-09-27 04:20发布

说我有这样的设置:

MVCApp1
MVCApp2
Identity Server

因此,也有我的解决方案中的三个项目。 身份服务器现在正在为他们所有。 然而,我发现,我必须登录到每一个独立。 那是对的吗? 也就是说,如果我登录到MVCApp1,那么这是否意味着我也应该隐含登录到MVCApp2?

说我想登录到所有三个网络应用程序,那么我将不得不浏览的每个网页的应用程序,登录或我应该只需要操作一次(我认为这是对是什么单点登录)。

下面是一些代码:

services.AddAuthentication(options =>
            {
                options.DefaultScheme = "Cookies";
                options.DefaultChallengeScheme = "oidc";
            })
                .AddCookie("Cookies")
                .AddOpenIdConnect("oidc", options =>
                {
                    options.SignInScheme = "Cookies";

                    options.Authority = identityUrl;
                    options.RequireHttpsMetadata = false;

                    options.ClientId = "mvc2";
                    options.ClientSecret = "secret";
                    options.ResponseType = "code id_token";

                    options.SaveTokens = true;
                    options.GetClaimsFromUserInfoEndpoint = true;

                    options.Scope.Add("API1");
                    options.Scope.Add("API2");
                    options.Scope.Add("offline_access");
                });

Answer 1:

SSO是专门用来处理这种情况下,不,你不应该需要登录到每个应用程序独立。

如果用户没有登录,则应该将其重定向到登录页面,当他们可以与Identity Server进行身份验证。 一旦通过验证,用户应该能够访问(无需登录)到两个应用程序MVCApp1和MVCApp2。

我会建议您存储智威汤逊在cookie中,然后可以通过您的应用程序,如果他们生活在同一个域下的共享。 然后,当任何应用程序需要授权,从请求头中的cookie获得JWT和利用它来进行身份验证。



文章来源: Do I have to login to each web application when using Identity Server?