問題タブ [windows-identity]
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.
c# - Windows 偽装はエラーなしでサイレントに失敗し、実行を終了します
以下を使用して、Windows 7 でユーザーを偽装しています。このコードは dll にコンパイルされ、python から呼び出されます。WindowsIdentity.Impersonate(safeTokenHandle.DangerousGetHandle());
通常は動作しますが、最近、メインの実行が失敗し、" " メソッドにまでさかのぼることが確認されています。これが呼び出されると、ユーザーを偽装せず、エラーはスローされず、実行はすぐに停止します (直後Console.WriteLine()
は呼び出されません)。
何か案は?お願いします?このトラブルシューティングにどれだけの時間を費やしたかを認めたくありません。
ありがとう!
Ben の推奨に基づいて python に変更しました。
c# - クライアント ユーザーの WindowsIdentity
私は会社の Web アプリケーションをプログラミングしています。ユーザーはユーザー名とパスワードを入力しないでください。ユーザーは Windows ID でシステムにログインできる必要があります。
アプリケーションがクライアント上にある場合は、 WindowsIdenity.GetCurrent() を試しました。
クライアント ユーザーの WindowsIdenitiy をサーバーに送信する方法を教えてください。
c# - サーバー上の WindowsIdentity.Current.Name の比較
現在、wcf サービスと、Windows 認証を使用して tcp 経由で接続するクライアント アプリケーションを備えたシステムを検討しています。
特定のアクションでは、ユーザー名をオブジェクト プロパティに保存し、それをサービスに送信して、クライアントから渡された資格情報と比較する必要があります。オブジェクトはさらに処理されます。
最近、これが常に期待どおりに機能するとは限らないことがクライアントによって発見されました。この問題を調べたところ、クライアント側とサーバー側で異なるユーザー名が使用されている場合があることがわかりました (小文字と大文字の使用方法が異なります)。
回避策をインストールしました(明らかにstring.EqualsでIgnoreCaseオプションを使用しています)が、実際の修正に興味があります。
クライアントでは WindowsIdentity.Current.Name を文字列として使用し、サービス側では ServiceSecurityContext.Current.WindowsIdentity.Name を文字列として使用します。
この比較を行う正しい方法は何ですか?
asp.net - asp.net WindowsImpersonationContext 関数
誰でも以下の行の機能を説明できますか:
これは、IIS 基本認証を使用した POST メソッドで使用され、正常に機能します。ただし、IIS 認証が Windows に設定されている場合、上記は機能しなくなります。
例としてダンプするにはコードが多すぎます。
c# - 現在の Windows ユーザー名を username@domain 形式で取得するにはどうすればよいですか?
次の関数は、現在の Windows ユーザーの名前を domain\username 形式で返すことを知っています。
username@domain
しかし、ユーザーの名前を形式で取得するにはどうすればよいですか?
編集:
返信したすべての人が同じ基本的な考えを持っているので、私はこの編集で返信しています。
私が理解していることから、domain\username
形式から名前を解析し、それをusername@domain
安全または推奨されていないものとして構築することはできません。これは、2 つのドメイン名が異なる形式で同じであるという保証がないためです。例えば、私の勤めている会社ではフォーマットのdomain
部分は部門別ですが、会社では会社名です。これは、DNS ルックアップが必要な種類のものです。domain\username
username@domain
この DNS ルックアップを行う API があることを期待していました。この情報を元の質問に入れるべきだったと思います。ごめん。
c# - ローカル管理者として実行している場合に C# をチェックインする方法
プロセスがローカル管理者として実行されているかどうかを C# を使用して確認するにはどうすればよいですか?
現在のユーザーが組み込みの管理者グループのメンバーであるかどうかを確認する方法を知っています。しかし、これは私が知りたいことではありません。現在のユーザーが (唯一の) 特別なローカル管理者アカウントであるかどうかを知りたいです。
現在のユーザーの名前を取得する方法も知っていますが、それをハードコーディングされた名前「管理者」と比較したくありません。これは、Windows のローカライズされたバージョンでは機能しないためです (たとえば、スペイン語の「管理者」、「管理者」)。フランス語など)。
c# - CryptographicException: WIF が有効になっている MVC 4 でデータが無効です
MVC 4 プロジェクトを作成し、Azure ACS 用にセットアップしました。System.Identity で動作しました。Microsoft.Identity を使用して WIF を有効にするように変更したところ、構成ファイルは次のようになりました。
私の問題は、私が取得したサイトを実行するときです:
asp.net-mvc-3 - MVC3Windows認証はUser.Identityをオーバーライドします
MSSQLバックエンドでMVC3を使用してイントラネットアプリケーションを構築しています。認証とロール(カスタムロールプロバイダーを介して)が正しく機能しています。私が今やろうとしているのは、User.Identityをオーバーライドして、User.Identity.FirstNameのようなアイテムを許可することです。しかし、WindowsIdentityでこれを行う方法を示すコードが見つかりません
カスタムプロバイダーを書いてみました:
WindowsAuthenticationをオーバーライドして、カスタムプリンシパルを設定します。
認証機能にブレークポイントがあり、プリンシパルにデータが入力されています。ただし、コントローラーにブレークポイントを設定すると、ユーザーはカスタムプリンシパルではなく、通常のRolePrincipalになります。私は何が間違っているのですか?
編集:
上記のコードをglobal.asaxでコメントアウトしました。C#を使用してAuthorizeAttributeをオーバーライドしました:
そして、私のプリンシパルを次のように調整しました:
ブレークポイントを設定すると、時計はユーザーに次のように表示されます。
- ユーザー
- [CSupport.Model.CPrincipal]
- 身元
IDにアクセスできます。ただし、それでもWindowsIdentity CPrincipalは時計でのみアクセス可能であり、直接アクセスすることはできません。
編集: これに貢献してくれたすべての人に感謝します。さまざまな部品がどのように機能するかについての私の理解が大幅に広がりました。
両方の働き方ができたので、シェアしたいと思いました。
オプション1:Global.asaxの承認リクエストを上書きする
これは私が行っているものです。
Application_AuthenticateRequestを使用しなかったのは、(これによると、Windows認証がオンになっているにもかかわらずHttpContext.Current.Userがnullである)、ユーザーがWindows認証プロセスに入力されていないため、ユーザーを取得するために使用できるものがないためです。情報。
Application_AuthorizeRequestはチェーンの次のものであり、WindowsIDが取り込まれた後に発生します。
これはプリンシパルのオーバーライドです
これは、作成された新しいプリンシパルの更新された情報にアクセスする方法です。
オプション2:AuthorizeAttributeをオーバーライドします
これはオーバーライドされたプリンシパルです(上記と同じです)
これがAuthorize属性のオーバーライドです
ここで、使用するAuthorizeAttributeを変更し、新しい情報を利用します。
オプション1はすべてをグローバルに処理し、オプション2はすべてを個別のレベルで処理します。
claims-based-identity - IClaimsPrincipal から SWT トークンを生成し、署名します。
次のクレームに基づいて SWT トークンを作成したいと思います。
swt トークンを検証するためのコードは見つかりましたが、IClaimsIdentity クレームから swt トークンを作成するサンプルは見つかりませんでした。
wcf - WindowsIdentity.GetCurrent().Name は、Windows ユーザー名ではなくマシン名を返します
IIS 7.5 の仮想ディレクトリで実行されている Web サービス アプリケーション (.asmx) を呼び出しています (開発目的で IIS 5.1 しか持っていませんが、何らかの助けが必要です)。VS2010 System.Security.Principal.WindowsIdentity.GetCurrent().Name 内から実行しているときに ws を呼び出すと、domain\windows ユーザーが返されますが、仮想ディレクトリから呼び出すと、machine name\ASPNET が取得されます。
何らかの理由で、最終環境の web.config で許可されていません。仮想ディレクトリには、統合 Windows 認証のみがあります。
説明されている状況で現在のユーザーの Windows ユーザー名を取得する方法について、誰かが光を当てることができますか?
前もって感謝します...
./CJ