私は倹約を使用するシステムを開発しています。クライアントのIDを確認し、操作をACL化したい。 Thriftはそれらをサポートしていますか?リリーフで認証と承認を処理する方法は?
答えて
直接ではありません。これを行う唯一の方法は、サーバー上に(一時的な)キーを作成する認証方法を用意し、最初の引数がこのキーであり、すべて認証されていないエラーをさらに発生させるようにすべてのメソッドを変更することです。例えば:
exception NotAuthorisedException {
1: string errorMessage,
}
exception AuthTimeoutException {
1: string errorMessage,
}
service MyAuthService {
string authenticate(1:string user, 2:string pass)
throws (1:NotAuthorisedException e),
string mymethod(1:string authstring, 2:string otherargs, ...)
throws (1:AuthTimeoutException e, ...),
}
我々は、このメソッドを使用すると、キーはすべて「てきぱき」維持するために30分のタイムアウトで安全なmemcachedのインスタンスに私たちのキーを保存します。 AuthTimeoutException
を受け取ったクライアントは再認証と再試行が予想され、ブルートフォース攻撃を阻止するためのファイアウォールルールがいくつか用意されています。
自動化とアクセス許可のようなタスクは、通常、一般的なRPC /シリアル化の概念よりも(通常は)アプリケーションロジックに関連しているため、Thriftの一部とはみなされません。 Thriftがすぐにサポートしている唯一のものはTSASLTransport
です。私はそれを使用する必要性を感じなかったので、私はそれについて多くを言うことができません。
もう1つの選択肢は、残念なことに書面ではC++でしか実装されていないTHeaderTransport
を使用することです。したがって、他の言語で使用する予定がある場合は、追加作業をする必要があります。私たちが貢献を受け入れると言うことは言うまでもない。
少し遅れた(私は非常に遅く思うが)2,3年前にこのためにスリフトソースコードを修正した。
ちょうどこのために、https://issues.apache.org/jira/browse/THRIFT-4221へのパッチでチケットを提出しました。
これを見てください。基本的には、これを行う "BeforeAction"フックを追加することです。
例Golangあなたは、ワイヤ上をクリアテキストでパスワードを送信している
+ // Called before any other action is called
+ BeforeAction(serviceName string, actionName string, args map[string]interface{}) (err error)
+ // Called if an action returned an error
+ ProcessError(err error) error
}
type MyServiceClient struct {
@@ -391,7 +395,12 @@ func (p *myServiceProcessorMyMethod) Process(seqId int32, iprot, oprot thrift.TP
result := MyServiceMyMethodResult{}
var retval string
var err2 error
- if retval, err2 = p.handler.MyMethod(args.AuthString, args.OtherArgs_); err2 != nil {
+ err2 = p.handler.BeforeAction("MyService", "MyMethod", map[string]interface{}{"AuthString": args.AuthString, "OtherArgs_": args.OtherArgs_})
+ if err2 == nil {
+ retval, err2 = p.handler.MyMethod(args.AuthString, args.OtherArgs_)
+ }
+ if err2 != nil {
+ err2 = p.handler.ProcessError(err2)
- 1. Asp.Net 4.0で認証と承認を実装する方法は?
- 2. BizTalk WCF-webhttpとIIS:認証と承認、ASP.NETの互換性またはカスタムを処理する方法は?
- 3. DotNetBrowserユーザーコントロールで承認を処理する方法は?
- 4. アプリケーションで承認を処理する方法は?
- 5. 提案/アイデア:ASP.Net Web APIコア経由でNuxeoの認証と承認を処理する方法
- 6. C#windowsアプリケーションで認証と承認を行う方法は?
- 7. Firebaseバックエンド認証の処理方法
- 8. OpenX XMLRPC認証/セッションの処理方法
- 9. WCFカスタム認証で例外を処理する方法は?
- 10. AngularJSでロールベースの認証を処理する方法は?
- 11. HttpWebRequest.AllowAutoRedirectで認証を処理する方法は?
- 12. アンドロイドアプリでドメイン認証を処理する方法は?
- 13. Angular Dartでトークン認証を処理する方法は?
- 14. AVURLAssetでHTTP基本認証を処理する方法は?
- 15. passport.js認証とエラー処理
- 16. Webフレームワークの承認処理
- 17. スプリング認証プロバイダVS認証処理フィルタ
- 18. AWS Api Gateway:認証、認証、SSOなどを処理する方法
- 19. JavaでSelenium WebDriverで認証ポップアップを処理する方法
- 20. Asp.netユーザー認証と承認
- 21. Yii認証と承認
- 22. EJB:カスタム認証と承認
- 23. 認証と承認、djangorestframework
- 24. JWT認証と承認
- 25. JSP - 認証と承認
- 26. 認証と承認WEBAPI
- 27. Firebase認証と承認
- 28. AngularJSの認証と承認
- 29. ポップアップ認証を処理する方法は?
- 30. selenium webdriverのブラウザの認証アラートを処理する方法は?
デフ生成しましたか? – JensG
@ JensGいいえ、暗号化された形式でパスワードを送信し、エンコードされた文字列をサーバー側でチェックしたいと考えています。ワイヤを介して送られた文字列が格納された文字列と正確には一致しないかもしれないが、bcryptアルゴリズムを使ってチェックされても、それでも有効である可能性があるので、Bcryptはこれに適している。 –
この場合、クリアテキストのパスワードは送信されませんが、ハッシュされたパスワードを攻撃者が読み取ることができれば、認証コールを再生してサービスにアクセスすることができます。 – cjungel