首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >有了ServiceStack Auth,是否有办法使重定向始终是HTTPS?

问有了ServiceStack Auth,是否有办法使重定向始终是HTTPS?
EN

Stack Overflow用户
提问于 2014-11-06 19:38:28
回答 1查看 260关注 0票数 1

对于网站登录,我使用ServiceStack的身份验证特性和身份验证属性、CredentialsAuthProvider和UserAuth存储库。但是,在生产过程中,它工作得很好,我们将所有IIS主机放在一个负载平衡器后面,该负载平衡器只通过设计提供HTTPS服务(将端口443上的所有请求转发到IIS实例上的端口80 )。这就产生了一个问题--身份验证属性仅重定向到HTTP端口80上的登录页面(我认为是因为它只看到了代理请求Url,而不是原始的请求Url)。这会导致浏览器中的请求失败,因为负载均衡器不执行HTTP,也不将HTTP请求重定向到HTTPS。我们不能将IIS配置为也是HTTPS。

是否有办法使Auth提供者中的重定向始终是HTTPS?或者,Auth提供程序可以查看X转发-Proto的HTTP头来查看登录页面请求应该在HTTPS上吗?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-11-06 20:52:39

以下是Demis在ServiceStack客户论坛上的回复:

一些OAuth urls是在配置:https://github.com/ServiceStack/ServiceStack/wiki/Authentication-and-authorization#oauth-configuration中指定的 对于其他自动生成的Urls,可以将其设置为使用https: SetConfig(新HostConfig { UseHttpsLinks = true }); 它应该修改最新版本4.0.33中使用的BaseUrl。 您还可以重写AppHost. ResolveAbsoluteUrl方法来内省/自定义urls。

以及我对AppHost.ResolveAbsoluteUrl覆盖的实现

代码语言:javascript
复制
public override string ResolveAbsoluteUrl(string virtualPath, IRequest httpReq)
{
    virtualPath = virtualPath.SanitizedVirtualPath();
    var absoluteUrl = httpReq.GetAbsoluteUrl(virtualPath);

    return httpReq.Headers["X-Forwarded-Proto"] != null
        && httpReq.Headers["X-Forwarded-Proto"].Equals("https", StringComparison.InvariantCultureIgnoreCase)
        ? absoluteUrl.Replace("http://", "https://") : absoluteUrl;
}

(顺便说一下,负载平衡器和实例都在AWS上)

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/26787984

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档