我在C#/ Mono的Apache2下使用ServiceStack运行Rest-Service。 Apache-Server使用SSL和BasicAuthentication与htpasswd文件。
如果我访问我的Rest-Service,我会得到aph的auth-Request,这很好。验证后,我的RestService被访问。现在我的问题是:我如何能够获得已请求服务并对其进行身份验证的用户(apache-session用户)? 我已经尝试过获取环境变量,但没有得到所需的信息。
根据我的理解,内置的ServiceStack身份验证要求我自己实现身份验证。但是我想使用apache的身份验证。
有人知道溶解吗?
问候 每日
P.S。 以下是我的Site-config for apache的Mono和SSL相关部分:
SSLEngine on
SSLCertificateFile /etc/apache2/ssl/apache.pem
SSLCertificateKeyFile /etc/apache2/ssl/apache.key
SSLOptions StrictRequire +StdEnvVars
SSLProtocol all -SSLv2
MonoServerPath wcs.service.de "/usr/bin/mod-mono-server4"
MonoDebug wcs.service.de true
MonoSetEnv wcs.service.de MONO_IOMAP=all
MonoAutoApplication disabled
MonoApplications wcs.service.de "/:/var/www/wcs"
答案 0 :(得分:2)
比发音晚一点,但这是问题的答案。
在ServiceStack服务中,您将RequestDTO作为参数。看到这个链接:
https://github.com/ServiceStack/ServiceStack/wiki/Access-HTTP-specific-features-in-services
在服务点下你可以看到我的意思。您不需要我在上面的答案中建议的RequestFilter。但是..你有这个IHttpRequest Servicestack。在此对象上,您可以获得OriginalRequest。这是原始的ASP.net-Request。您必须将结果强制转换为HttpRequest(ASP.net)。
var orgRequest = (HttpRequest)request.OriginalRequest;
在这个新铸造的对象上,您有一个可访问的字段Param。您现在可以获取REMOTE_USER参数,其中包含我需要的SSL用户。
var sslUser = orgRequest.Param["REMOTE_USER"];
我希望这可以帮助遇到同样问题的人。
每天的问候