問題タブ [servicestack-auth]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
servicestack - ServiceStack 4.0.30 - CredentialsAuthProvider - 失敗した認証で 401 ステータスを設定しない
4.0.30 にアップデートしたところ、ユーザーが認証に成功したかどうかに関係なく、 /auth?username=xxxx&password=xxxx が 200 ステータスを返すことに気付きました。PostMan を使ってみました。最近の変更ログに何も表示されていないため、何が変更されたのですか?
servicestack - UserOAuthProviders からプロバイダーを 1 つだけ削除する方法
ソーシャル プロバイダーをユーザー アカウントに関連付けるには、単純に を使用できます。使用するとユーザーがログアウトapi/auth/facebook
されることもわかりました...auth/logout
データベースには 2 つのプロファイルがまだ残っているため、ログアウトは認証セッションを強制終了する簡単な方法です...しかし、どうすればそれらのリンクを解除できますか?
- API を使用して、アカウントを 1 つのソーシャル ログインに削除/リンク解除する方法はありますか?
ノート:
ソーシャルログインが「すぐに」機能し始めたため、ビュー(コントローラーなし)を追加したときにここに/Friends/Index.cshtml
たどり着きました...これに関するドキュメントには何も見つかりませんでした。重要な注意点 :)
これはoauth.<provider>.CallbackUrl
on web.config
!で行われます。
servicestack - パーマネント セッションの使用時に認証サービスが認証されていないと言う
一時セッションを使用すると、正常に動作します。認証サービスにログインし、パラメータなしで /auth を呼び出すと、表示名、セッション ID などが表示されます。
私がRememberMe=trueでログインすると、その呼び出しはセッション情報を正しく返します。ただし、パラメータを指定せずに /auth を呼び出すと、ServiceStack は認証されていない 401 を返します。セッション オブジェクトの IsAuthenticated プロパティは true であり、実際に存在します。私のコードはこれをチェックし、それが偽の場合、ユーザーをログインページに転送しますが、これは発生しないため、ユーザーが実際に認証されていることがわかります。
私は何も違うことをしているわけではありません。パーマネント セッションで認証し、その後 /auth を呼び出して、ログインしていることを確認するにはどうすればよいですか?
それが役立つ場合は、CustomCredentialsProvider を使用しています。
アップデート:
AppHost コード:
最初のリクエスト ヘッダー:
https://****.com/api2/auth?username=user&password=passwordmberme=true
- GET /api2/auth?username=user&password=password&rememberme=true HTTP/1.1
- 受け入れる: text/html、application/xhtml+xml、/
- Accept-Language: en-US
- ユーザーエージェント: Mozilla/5.0 (Windows NT 6.1; WOW64; Trident/7.0; rv:11.0) のような Gecko
- Accept-Encoding: gzip、デフレート
- ホスト: propel.zola360.com
- DNT: 1
- 接続: キープアライブ
- Cookie: ss-pid=P2hslABCmSs7pomRqNz5; ss-opt=perm; X-UAId=
初期応答ヘッダー:
- HTTP/1.1 200 OK
- キャッシュ制御: プライベート
- コンテンツタイプ: text/html
- コンテンツ エンコーディング: gzip
- Vary: Accept-Encoding
- サーバー: Microsoft-IIS/7.5
- X-Powered-By: ServiceStack/4.033 Win32NT/.NET
- Access-Control-Allow-Origin: *
- アクセス制御許可メソッド: GET、POST、PUT、DELETE、OPTIONS
- Access-Control-Allow-Headers: Content-Type、Authorization、Accept
- Access-Control-Allow-Credentials: true
- X-AspNet バージョン: 4.0.30319
- セット Cookie: ss-id=pojZkNAdMcEcACDREcRM; ドメイン=.zola360.com; パス=/; HttpOnly
- セット Cookie: ss-opt=perm; ドメイン=.zola360.com; expires=Mon, 13-Nov-2034 16:11:09 GMT; - パス=/; HttpOnly
- セット Cookie: X-UAId=; ドメイン=.zola360.com; expires=Mon, 13-Nov-2034 16:11:09 GMT; パス=/; HttpOnly
- セット Cookie: 47=0; ドメイン=.zola360.com; パス=/
- セット Cookie: UserId=47; ドメイン=.zola360.com; パス=/
- X-Powered-By: ASP.NET
- 日付: 2014 年 11 月 13 日 (木) 16:11:09 GMT
- コンテンツの長さ: 4129
初期応答本文:
{"userId":"47","sessionId":"PKrITmRawxAtnaABCDgN","userName":"user","responseStatus":{},"meta":{"ExpiresMinutes":"360"}}
/auth 要求への後続の呼び出し:
- GET /api2/auth HTTP/1.1
- 受け入れる: text/html、application/xhtml+xml、/
- Accept-Language: en-US
- ユーザーエージェント: Mozilla/5.0 (Windows NT 6.1; WOW64; Trident/7.0; rv:11.0) のような Gecko
- Accept-Encoding: gzip、デフレート
- ホスト: propel.zola360.com
- DNT: 1
- 接続: キープアライブ
- クッキー: ss-pid=cvgslABCmSs6pomYdLu0; ss-opt=perm; X-UAId=; ss-id=lYWZkFAdMcZcABCDcRM; 47=0; ユーザーID=47
/auth 応答への後続の呼び出し
- HTTP/1.1 401 認証されていません
- キャッシュ制御: プライベート
- コンテンツタイプ: text/html
- 変更: 受け入れる
- サーバー: Microsoft-IIS/7.5
- X-Powered-By: ServiceStack/4.033 Win32NT/.NET
- Access-Control-Allow-Origin: *
- アクセス制御許可メソッド: GET、POST、PUT、DELETE、OPTIONS
- Access-Control-Allow-Headers: Content-Type、Authorization、Accept
- Access-Control-Allow-Credentials: true
- X-AspNet バージョン: 4.0.30319
- X-Powered-By: ASP.NET
- 日付: 2014 年 11 月 13 日 (木) 16:11:23 GMT
- コンテンツの長さ: 9731
/auth 本体への後続の呼び出し:
{"responseStatus":{"errorCode":"Not Authenticated","message":"Not Authenticated","stackTrace":"[Authenticate: 11/13/2014 3:27:49 PM]:\n[REQUEST: {}]\nServiceStack.HttpError: Not Authenticated\r\n ServiceStack.Auth.AuthenticateService.Post(認証リクエスト)\r\n lambda_method(Closure , Object , Object )\r\n ServiceStack.Host.ServiceRunner` 1.Execute(IRequest リクエスト、オブジェクト インスタンス、TRequest リクエスト Dto)","エラー":[]}}
更新 自分自身を認証し、他の Web サービスを呼び出す小さな Python3 スクリプトを作成しました。RememberMe=true を使用した認証の後、Cookie は期待どおりに返されます。ss-id/pid は適切に設定され、ss-opt=perm です。ヘッダー Cookie を印刷し、それを別の要求のヘッダーに貼り付けて、[Authenticate] でマークされた別のサービスを呼び出すことを考えました。うまくいきませんでした。そこで私は何かばかげたことを試して、ss-pid Cookie 値を ss-id 値に貼り付けました。出来た。
失敗したCookie文字列は次のとおりです(セッションは編集されました:)):
cookie = " ss-id=ss-ID-session-cookie ; domain=.zola360.com; path=/; HttpOnly, ss-pid=ss-PID-session-cookie ; domain=.zola360.com; expires=Tue , 14-Nov-2034 01:34:25 GMT; path=/; HttpOnly, ss-opt=perm; domain=.zola360.com; expires=Tue, 14-Nov-2034 01:34:25 GMT; path= /; HttpOnly, X-UAId=; domain=.zola360.com; expires=Tue, 14-Nov-2034 01:34:25 GMT; path=/; HttpOnly, 47=0; domain=.zola360.com; path =/、UserId=47; ドメイン=.zola360.com; パス=/"
ss-pid 値を ss-id に貼り付けるだけで機能します。
cookie = " ss-id=ss-PID-session-cookie ; domain=.zola360.com; path=/; HttpOnly, ss-pid=ss-PID-session-cookie ; domain=.zola360.com; expires=Tue , 14-Nov-2034 01:34:25 GMT; path=/; HttpOnly, ss-opt=perm; domain=.zola360.com; expires=Tue, 14-Nov-2034 01:34:25 GMT; path= /; HttpOnly, X-UAId=; domain=.zola360.com; expires=Tue, 14-Nov-2034 01:34:25 GMT; path=/; HttpOnly, 47=0; domain=.zola360.com; path =/、UserId=47; ドメイン=.zola360.com; パス=/"
そして、私が使用した Python3 スクリプト:
ss-opt=perm にしても、まだ何かが ss-id の値を見ているようです。
nhibernate - Servicestack NHibernate Auth Repo に CurrentSessionContext が設定されていません
私は次の構成を持っています:
そして、私が持っている他の場所:
これはすべて私のアプリの残りの部分で機能しますが、NH auth リポジトリで何かを使用しようとすると、次のようになります。
誰が何を警告したのか手がかりを得た人はいますか?
[アップデート]
私のAppHost.Configure
方法では、次を追加しました。
役に立たない-私はそれをどのように処分するのかもわかりません:p
また、アプリの他のすべての部分と同じように ISessionFactory が挿入されているため、混乱しています。
確かにそれはうまくいくはずですか?
xamarin.ios - ServiceStack クライアントでの認証要求/応答 POCO の欠落
ServiceStack について多くのことを読んだ後、それはとても美しい芸術作品だと思い、今後の Xamarin iOS アプリに使用することにしました。
現在の問題は、Xamarin.iOS 用の ServiceStack.Client をインストールした後、サービスで認証および登録プラグインを有効にしているにもかかわらず、登録または認証に使用される要求/応答 DTO (POCO) が見つからないことです。ホスト。
ソースコードを掘り下げた後、これらの要求/応答 DTO が ServiceStack アセンブリに存在することがわかりました。これは大きな依存関係であり、iOS アプリに含めることはできないと思います。
それを回避する方法はありますか?これらの DTO は、おそらく ServiceStack.Client.Auth の下で ServiceStack クライアント自体と一緒に出荷されるべきではありませんか?
ありがとう
redis - プロパティの値に基づいて、servicestack redis セッション オブジェクトの選択を取得します
redis に保存されている複数の servicestack ユーザー セッションを更新したいと考えています。カスタム プロパティが特定の値に設定されているすべてのセッションを返したい場合は、それらを処理できます。現時点で私が持っている最良の解決策は、すべてのキーを次のように返します。
これはうまくスケールしないと思います。私は次のようなことをしたいと思います:
これはredisで可能ですか?可能であれば、理想的にはServiceStackで標準ライブラリを使用します.
authentication - ServiceStack で基本認証を使用してユーザーをログアウトできない
現在、ServiceStack の認証プラグインを実装しようとしていますが、ユーザーがログインした後にログアウトするのに問題があります。このスレッドから見たことがあります。
ServiceStackで認証されたユーザーをログアウトするには?
リクエストを行うことができるはずですauth/logout
。ただし、この時点ではまだログインしています。また、無効なユーザーとしてログインしようとしました/auth?username=&password=
が、役に立ちませんでした。
奇妙なことに、これらの方法は非常にまれにしか機能しませんでしたが、その理由はわかりませんでした。どんな助けでも大歓迎です。
アップデート:
Fiddler で上記のリクエストを試してみたところ、401 が戻ってきていることに気付きました。無効なユーザーとしてログインしようとすると、それが予想されるはずですが、ログアウト リクエストの場合はなぜですか?
asp.net - 共有セッション状態ストレージなしで Web ファーム全体で ServiceStack 認証を有効にすることは可能ですか?
ASP.NET フォーム認証を使用すると、Web ファーム内のすべてのサーバーをセットアップして、認証チケットの暗号化用に同じマシン キーを共有できます。つまり、アプリケーションでセッション状態を必要とせずに Web ファームにスケールアウトするのは簡単です。 .
つまり、http://www.iambacon.co.uk/blog/getting-asp-net-authentication-to-work-on-a-web-farm
ServiceStack認証を使用してこの切断されたセットアップを達成する方法はありますか?それとも実装には、すべてのWebサーバーからアクセス可能な場所に共有セッション状態を永続化する必要がありますか? 共有状態が必要だと思いますが、それを回避する方法があれば、もっと知りたいと思います... (私たちはグローバルに負荷分散しているので、共有状態はもう少し難しいです)