1

C#/Mono の Apache2 で ServiceStack を使用して Rest-Service を実行しています。Apache サーバーは、htpasswd ファイルで SSL と BasicAuthentication を使用しています。

Rest-Service にアクセスすると、良い Apache の auth-Request を取得します。認証後、RestService にアクセスします。ここで私の質問は次のとおりです。サービスを要求して認証されたユーザー (apache-session ユーザー) を取得するにはどうすればよいですか? 私はすでに環境変数を取得しようとしましたが、要求された情報を取得できませんでした。

私が理解しているように、ServiceStack のビルトイン認証では、自分で認証を実装する必要があります。しかし、Apacheの認証を使いたいです。

誰かが解決策を知っていますか?

毎日のあいさつ

PS以下は、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"
4

1 に答える 1

2

発音より少し遅いですが、これが質問への答えです。

ServiceStack サービスでは、RequestDTO をパラメーターとして取得します。このリンクを参照してください:

https://github.com/ServiceStack/ServiceStack/wiki/Access-HTTP-specific-features-in-services

ポイントサービスの下で、私が何を意味するかを見ることができます。上記の回答で提案したように、RequestFilter は必要ありません。ただし.. Servicestack のこの IHttpRequest があります。このオブジェクトで、OriginalRequest を取得できます。これは元の ASP.net-Request です。結果を HttpRequest (ASP.net) にキャストする必要があります。

var orgRequest = (HttpRequest)request.OriginalRequest;

この新しくキャストされたオブジェクトには、アクセス可能なフィールド Param があります。これで、必要な SSL ユーザーを含む REMOTE_USER パラメータを取得できます。

var sslUser = orgRequest.Param["REMOTE_USER"];

これが誰かが同じ問題に遭遇するのに役立つことを願っています.

こんにちは、毎日

于 2013-09-30T09:34:29.170 に答える