带有MVC Client的Identity Server在AWS Load Balancer后面运行

时间:2018-02-21 22:21:27

标签: c# asp.net-mvc amazon-web-services https identityserver4

我目前在我的AWS服务上设置了以下内容

  • 在Windows 2012 R2上的IIS上运行的MVC客户端应用程序(在http下)
  • 在Linux上的Kestrel下运行的Identity 4安全服务(在http下)

我还使用AWS负载均衡器来处理SSL验证等,以便在HTTPS上运行应用程序。

MVC客户端应用程序和安全服务也在不同的公共网址上。

我面临的问题如下:

当用户浏览MVC客户端(https://mywebsite.net)上的受保护操作时,他们会通过其公共地址(https://auth.mywebsite.net)重定向到我的安全服务。安全服务将客户端应用程序的地址视为http://mywebsite.net,因此客户端记录的设置与客户端重定向uri为http://mywebsite.net/signin-oidc,以便成功验证客户端。

用户成功登录后,会将其重定向回客户端应用程序的signin-oidc端点,但这是在HTTP上完成的:(这会导致用户浏览器出现安全警告,因为它们从HTTPS转到HTTP。

是否有一种方法(在平衡器后面)可以指示安全服务重定向到HTTPS而不是HTTP。

是否存在客户端传递用户访问的URL(https://mywebsite.net)而非平衡器输出(http://mywebsite.net)以用于客户端验证的方式。

对此有任何帮助将不胜感激。

此致

斯图尔特弗格森

1 个答案:

答案 0 :(得分:0)

请参阅this链接。请查看身份服务器4上的配置,确保您的redirecturi设置正确。

我特指这段代码:

在身份服务器4上: Config.cs

//使用隐式流的MVC客户端                 新客户                 {                     ClientId =“mvc”,                     ClientName =“MVC Client”,

                AllowedGrantTypes = GrantTypes.Implicit,
                ClientSecrets = { new Secret("373f4671-0c18-48d6-9da3-962b1c81299a".Sha256()) },
                ClientUri="http://localhost:5500",
                RedirectUris = {"http://localhost:5001/signin-oidc",},
                LogoutUri = "http://localhost:5001/signout-oidc",
                PostLogoutRedirectUris = { "http://localhost:5001/signout-callback-oidc" },

                AllowOfflineAccess = true,
                AllowedScopes =
                { 
                    "api1",
                    "profile",
                    "openid"
                }
            },