問題タブ [security-context]
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.
vb.net - vb.net で別のユーザーとして新しいプロセスを実行する
私は現在、独自の方法を使用して、Vista で別のユーザーとしてプロセスを実行していますが、ハック的で理想的ではないという感覚から逃れることはできません (UAC をクラップアウトし、私のシステムをクラッシュさせるという事実に加えて)アプリにセキュリティ例外があり、UAC を完全に無効にする必要があります)。私のプロセスは、「インターフェイス」と「起動スタブ」の 2 つのプロジェクト (2 つの EXE ファイル) で構成されています。プロセスは次のとおりです。
- ユーザーには、「Interface.exe notepad.exe」を起動するショートカットがあります
- Interface.exe には、使用したい資格情報を要求するフォームがあります。
- Interace.exe は ProcessStartInfo を使用して、LaunchStub.exe (LS) のインスタンスを新しいユーザーとして作成します。
- LS は ProcessStartInfo (ShellExecute を true に設定) を使用して、要求されたファイルを起動します。LS は要求されたユーザーとして既に実行されているため、新しいプロセスも実行されます。
2 段階のプロセスを使用する理由は、ユーザーが、OS が既定のアクション (.EXE、.SQL、.MSC など) を持っている任意のファイルを右クリックして起動できるようにし、ProcessStartInfo のみを実行できるようにするためです。 「UseShellExecute」を有効にしてそれをサポートしますが、そのスイッチでは新しい資格情報を使用できないため、一度に 1 つしか実行できません。
これにより、いくつかの問題が発生します。まず、ユーザーはコンピューターに既に存在している必要があります。つまり、以前にローカルでログインしている必要があります。そのユーザーのローカル プロファイルがない場合、要求されたアプリが起動することがありますが、レジストリとプロファイルの例外が発生します。これは、アプリケーションがまだ存在しないもの (ユーザーが存在しないレジストリ内の HKCU ハイブなど) を想定しているためです。ログインしたことがないため)。
アプリケーションの権利を要求しているユーザーに「昇格」させ、新しいプロセスを起動し、昇格を元に戻すことができるはずですが、そのための適切なコードサンプルを見つけることができず、完全に別のユーザーとして実行できるかどうかはわかりません。これはすべて意味がありますか?これを行うためのより良い方法があるように感じずにはいられません。
更新:オンラインで見つけた偽装コードをいくつか試しましたが、役に立ちませんでした。ProcessStartInfo と組み合わせて使用すると、提供された資格情報を使用して偽装を有効にしたにもかかわらず、提供したものではなく、現在のログインを使用してプロセスを起動しているように見えます。
windows-services - マップされたドライブにアクセスできないサービス
多くのフォーラムで、ユーザーがログオンしていないため、マップされたドライブにサービスからアクセスできないことを読みました。
質問1)あるアカウントとして、ログオンとしてサービスを作成しようとしましたが、そのアカウントにネットワークドライブをマッピングしました。サービスはまだアクセスできません。なんで?
質問2)同じサービスから、別のプロセスを呼び出します。プロセスはどのユーザーアカウントで実行されますか?
ありがとう
sql-server - 現在行われているセキュリティチェックの決定(SQL Server)
私がMSSQLServerの何よりも常に嫌っていたのは、セキュリティの仕組みです。サーバーを面白く見ると、セキュリティコンテキストは常に切り替わり、予測やデバッグが非常に難しいことがよくあります(とにかく私にとっては)。
しかし、今日の問題に対処する際に、「このコードの実行時にSQLServerが使用しているセキュリティコンテキストを表示する行をコードに追加できればいいのにと思います。」そのようなコマンドは存在しますか?例えば、SELECT security_context()
もう少し明確にするために...私がストアドプロシージャを使用していて、そのためにSPの所有者のセキュリティコンテキストの対象である場合は、それを確認したいと思います。sp_executesqlによって呼び出されたコードを使用していて、セキュリティがSQL Serverサービスアカウントのコンテキスト下にある場合は、それを確認したいと思います。
少なくとも、SQLServerが何かにアクセスするべきではないと考える理由を理解できるかもしれません。
ありがとう!
例
.net - CreateProcessAsUser がユーザーを正しく設定していない
を使用して GUI アプリを呼び出す
LocalSystem Windows サービスから動作します。ユーザー画面にウィンドウがポップアップしますが、プロセス ユーザーは LocalSystem のままです。それを変更する方法はありますか?
PSリクエストに応じて、私はから取得hUserTokenDup
します
c# - C# SeviceSecurityContext.Current は保存されていません QueueUserWorkItem
ThreadPool.QueueuserWorkItem を使用してスレッドを委譲すると、ServiceSecurityContext.Current は持続しません (null を返します)。私が呼び出しているいくつかのメソッドでは、情報を返す前にセキュリティ コンテキストが有効である必要があります。
同じセキュリティ コンテキストで実行されるスレッドを作成する方法はありますか? 現在のセキュリティ コンテキストを永続化することは可能ですか、それともスレッド固有のセキュリティ コンテキストをセットアップする必要がありますか?
security - 親コンテキストと子コンテキストでSpring Beanを宣言する
次のxmlを介してServletContextでインスタンス化するSpring Bean(dao)オブジェクトがあります。
この Bean は webapp-servlet.xml ファイル内で宣言され、ServletContext 内のアプリによって使用されます。
SpringSecurity も使用しています。これが別のコンテキスト (SecurityContext) で実行されることは、私の理解です。
私のアプリケーションには、カスタム認証プロバイダーをインスタンス化する webapp-security.xml があります。アプリで使用されているdaoを使用して、セキュリティコンテキストでユーザールックアップも行いたいのですが、実行すると:
そのような Bean "userDao" がないというエラーが表示されます。Bean は、他のコンテキストで宣言された Bean では正常に自動配線されますが、セキュリティ コンテキスト内では自動配線されません。Spring Docsによると、web.xmlには両方の別々のコンテキストが必要だと思います
私の質問は、SecurityContext 内の ServletContext にある DAO にアクセスするにはどうすればよいですか? 私のdaoのスコープ修飾子はありますか、それとも実行時に認証プロバイダー内で何らかの方法でServletContextを取得できますか? 参考までに、これは認証プロバイダー内で使用する方法です。
これを私に説明してくれてありがとう
アップデート:
調査を続けると、daos を使用している DispatcherServlet は子コンテキストであり、セキュリティ コンテキストはどこか上位にあるようです。したがって、DispatcherServlet の Bean は親コンテキストからは見えません。答えは、どうにかして Bean 宣言を親アプリケーションのコンテキストに移動することだと思いますが、これを行う方法がわかりません。これが私のweb.xmlです
すべての dao 作成を spring-dao.xml に移動し、spring-security.xml で次のことを行っています。
ただし、daos は DispatcherServlet コンテキストには表示されたままですが、SecurityContext には表示されません。
答えた:
わかりました。ここにいくつかの役立つリンクがあります:
http://static.springsource.org/spring-security/site/faq.html#faq-method-security-in-web-context
したがって、問題は、dao が ApplicationContext (上位のスプリング コンテナー) に存在することを確認する必要があることでした。これが確実に行われるようにするために、web.xml を次のように変更しました。
これにより、起動する最初のコンテキストローダーがdao構成を読み取り(そしてdao Beanを作成し)、次にセキュリティ構成を読み取ることが確実になると思いました。dao Bean はこの方法で作成されているため、security.xml 内の以前の "import resource="spring-dao.xml"" ステートメントは不要になるため削除しました。
その context-param 構成の直後に、ContextLoaderListener を作成しました。これは DispatcherServlet よりも高レベルの Spring コンテナーであるため、これを最初に配置すると、最初に構成ファイルを読み取り、Bean を作成することになると考えました。次に、子コンテキストはそれらにアクセスできます。DispatcherServlet は contextConfigLocation を読み取ることすらできないため、これは機能しない可能性がありますが、読み取ったとしても、この時点で Bean は既に宣言されているので、残念なことに、親コンテキストがそれらを所有していると考えました。
さて、別のトリックとして... DAO を取得するために、@Autowiredを実行できませんでした。XML経由で手動で挿入する必要がありました:
もちろん、私は自分の dao でゲッター メソッドとセッター メソッドを作成しました。ここで @Autowired が機能しない理由がわかりません。設計によるものだと思います。おそらく、これは SecurityContext に固有のものであり (他のコンテキストからはプルされません)、@Autowired は通常、現在のコンテキストからのみプルするか、または XML を介して Bean を作成したため、xml を介してプロパティも設定する必要があります。注釈経由ではありませんか?(注釈は有効になっており、最上位のアプリケーション名前空間で機能しています)。
とにかく..まだわからないことがたくさんありますが、重要な点は、ようやく機能するようになったことです。
java - 使用する SecurityContextHolder 戦略がわかりません
私は認証のためにそのようなコードを使用します:
ログインできます。動作します。ログに null 以外の認証オブジェクトが表示されます。次に、次のような保護されたページを閲覧しようとします。
そして、getAuthentication() のために NullPointerException をスローします。これは、SecurityContextHolder.MODE_GLOBAL の使用とは異なり、SecurityContextHolder.MODE_INHERITABLETHREADLOCAL および SecurityContextHolder.MODE_INHERITABLETHREADLOCAL を使用すると発生します。
私は何を間違っていますか?SecurityContextHolder の MODE_GLOBAL 動作は必要ありません。
UPD:問題が発生することもあれば、同じセッションで発生しないこともあります。
c# - C# で SSL (https) を使用して Web サービスを使用する
C# で SSL で保護された Web サービスを使用したいと考えています。リクエストは次のようになります。
WSDL のエンドポイント宣言は次のようになります。
app.config は次のようになります。
その C# コードを使用して Web サービスにアクセスしようとしました。
しかし、常に meansclass() によってスローされる例外があります。ドイツ語では次のように言います。
タイプ「クライアント認証」の例外 (...) セキュリティ コンテキストがありません。
私はたくさんグーグルで検索しましたが、何が間違っているのかわかりません。そのような「セキュリティコンテキスト」を作成するにはどうすればよいですか? それとも何が悪いのですか?
javascript - 別の資格情報セット/セキュリティ コンテキストを使用して Ajax 呼び出しを行うにはどうすればよいですか?
AJAX呼び出しを行うページとは異なる認証/セキュリティ/セッションコンテキストを使用して、特定のWebサイトにAJAX呼び出しを行うことが可能かどうかを調べていますが、理想的にはサーバー上の同じWebアプリケーションを使用/アクセスします(および認証スキーム)
例: ブラウザーは、https: //web.server.com/admin_page.html (認証が必要) を要求して受信し、ページの JavaScript を処理します。これは、 https://web.server.com/server_infoのようなものへの Ajax 呼び出しを指定します。 .html (資格情報/認証を必要としない) を 30 秒ごとに。
また、ページの JavaScript は、(サーバー セッションの長さに基づいて) 一定時間後にユーザーを自動的にログアウトさせます。サーバー側のセッションを明確に強制終了しないサーバーへのすべての呼び出し (最終的な自動ログオフ呼び出しなど) は、基本的にユーザーのセッション タイマーを再起動するため、UNAUTHENTICATED server_info.html 呼び出しを継続できるようにしたいと考えています。ユーザーのAUTHENTICATEDサーバー側セッションに影響を与えることなく、30秒ごとに。
同じデータベースや他のリソースにたまたまアクセスするサーバー上の複数のアプリケーションでこれを行うことができると思いますが、すべてを同じアプリケーション内に保持する方法が非常に望ましいです。
問題は、これを実現するために別のサーバー アプリケーションを使用する必要があるか、それとも同じアプリケーションを使用できるか、可能であれば、使用しているサーバーまたはアプリケーション テクノロジに依存するかということです。
session - 複数のグラスフィッシュ サーバー間でセキュリティ コンテキストを共有する
- 私のアプリケーションは、複数のコンポーネント (Web アプリケーション) に分散されています。
- コンポーネントは異なる Glassfish サーバーにデプロイされます。
- 各 Glassfish サーバーは、異なるホストで実行されています。
提供されたセキュリティ レルムを認証に使用しています。
サーバー x で既に認証されているユーザーが、サーバー y で再度認証する必要がない (シングルサインオン) 方法はありますか?
セッションレプリケーションを調べていました。しかし、クラスタリングを正しく理解していれば、アプリケーションをクラスタ全体 (各インスタンス) にデプロイする必要があることを意味します。私が必要としているのは、物理的に分散されたソリューションです。
このセットアップの理由は、負荷分散や高可用性ではありません。これは顧客の要求です。
アイデアや回避策はありますか?ありがとう!