問題タブ [networkcredentials]
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.
httpwebrequest - NetworkCredential が設定された後続の HttpWebRequest は、最近変更されたドメイン パスワードを尊重します
Windows ドメインのユーザー名とパスワードを収集し、Web フロント エンドを介して Cookie に保存します。これらの資格情報と特定のデータの要求は、最終的に Windows サービスでホストされている WCF 呼び出しを介して継続的に渡されます。WCF 呼び出し自体は、新しい REST 呼び出しとして、Windows 認証が構成された IIS の下の別のサーバー セットアップにリダイレクトします。これは HttpWebRequest を使用して行われます...
したがって、Cookie ドメイン パスワード A に保存する場合は、上記の方法でリクエストを行い (すべて正常に動作します)、Windows ドメイン パスワードを B に変更します。その後のリクエストで見つかったのは、上記のコードです (再び Windows として実行されます)。サービス) は、NetworkCredential で A を受信して設定するときに問題なく認証されます (Cookie がまだ古いパスワードでぶら下がっているため、A を受信します)。サービスをすぐに再起動すると、パスワード A で HttpWebRequest と NetworkCredential を使用しようとすると 401 が生成されます。再起動するまで古いドメイン パスワードが使用されるのはなぜですか? どうやってその行動を止めますか?
wcf - NetworkCredentials オブジェクトを WCF サービスに渡す
編集-この質問を(うまくいけば)より適切に焦点を当てるために言い直しました。
対話する必要があるコンポーネントは次のとおりです。 ASP.NET Web サイト <--> WCF サービス <--> サード パーティの Web サービス
サード パーティの Web サービスには、プロキシの構築中にネットワーク資格情報を指定することによる Windows 認証が必要です。例えば:
私の知る限り、これは、WCF サービスがユーザーをサード パーティの Web サービスに偽装できる唯一の方法です。Windows 認証 (ネットワーク資格情報経由) は、サポートされている唯一の偽装手段です。サード パーティの Web サービスと WCF サービスの間にある種の信頼を設定する機能はありません。
Web サイトは、個々のユーザーのアカウントではなく、サービス アカウントで実行されます。ユーザーが Web サイトにログインすると、ActiveDirectory で検証しますが、AD を使用して「はい、それは有効な名前とパスワードの組み合わせです」と言うだけです。
Web サイトで知っている情報 (ユーザー名、パスワード) を取得し、それを WCF サービスのネットワーク資格情報に変換する方法が必要です。私が読んだ限りでは、ユーザー名/パスワード、またはネットワーク資格情報オブジェクト (可能であれば) を渡すことは、大きなセキュリティ リスクであり、本当に悪い習慣であると述べています。
Web サイトがユーザーのアカウントで実行されていない場合に、Web サイト ユーザーの Windows ID を WCF サービスで使用できるようにするために、どのようなオプション/手法を使用できますか?
洞察をありがとう。
PS 私はこの投稿を見つけました: How do you pass user credentials from one process to another for Impersonation in .NET 1.1? 質問を投稿した後、その内容を使用しています。
c# - 基本認証を使用した HttpWebRequest が DefaultNetworkCredentials の 401 エラーで失敗する
ローカル Web サーバー (IIS、Windows 8) を使用してアプリケーションをテストしています。サイトには基本認証が必要です。資格情報を明示的に渡す限り、すべて正常に動作します。
しかし、統合セキュリティを使用したいので、最初の行を次のように変更してみました。
(DefaultCredentialsも試しました)
Fiddler でネットワーク トラフィックを確認したところ、2 番目のケースでは HTTP 要求が承認ヘッダーなしで送信されていることがわかりました。したがって、失敗しても驚くことではありません。しかし、なぜ?
アップデート。デフォルトの資格情報の概念を誤解していると思います。DefaultNetworkCredentials を使用して基本認証ヘッダーを生成することはできません。ユーザーとパスワードのペアである必要があります。したがって、この動作は仕様です。
authentication - NTLM-認証は失敗しますが、基本認証は機能します
アプリケーションがローカルIISでHTTP要求を呼び出すと、ローカルサーバーで何が起こるかを次に示します。
リクエストを実行すると、Fiddlerで次の一連のHTTP呼び出しを確認できます。
- 許可ヘッダーなしで要求すると、結果はWWWで401になります-NTLM+Negotiateを認証します
- 承認を伴うリクエスト:ネゴシエート(Base64文字列1)、結果はWWWで401になります-認証:ネゴシエート(Base64文字列2)
- 承認を伴うリクエスト:ネゴシエート(Base64文字列3)、結果はWWWで401になります-認証:ネゴシエート(Base64文字列4)
- 承認を伴う要求:ネゴシエート(Base64文字列3)、結果はWWWで401になります-NTLM+Negotiateを認証します
どうやらクライアントとサーバー(両方とも同じマシン上で実行されている)がハンドシェイクを試みていますが、最終的に認証は失敗します。
奇妙なことに、サイトのWindows認証を無効にし、基本認証を有効にして、user / pwdを明示的に送信すると、すべてが機能します。NTLM認証を使用して、資格情報を指定してブラウザーからサイトにアクセスしようとした場合にも機能します。
c# - Windows 8 は FormsAuthentication を介して SharePoint REST インターフェイスを使用していますか?
_vti_bin/ListData.svc のような REST Api を使用して SharePoint 2010 リスト データを取得する Windows 8 アプリケーションのサンプルを作成しました。NetworkCredential を使用してリストにアクセスしています。FormsAuthentication を使用して同じ結果を得るにはどうすればよいですか? NetworkCredential のコード:
asp.net - Windows認証が有効でサービスアカウントを持つWebサーバーで実行されているWebアプリケーションからクライアントユーザー名を取得する
アプリケーションをWebサーバーにデプロイしているときに、次の問題が発生しました。
私が持っているコードは「Usercheck=My.User.Name」でしたが、Webアプリを実行しているインスタンスのサービスアカウントが返されるため、現在のWindowsクレデンシャルである「evilla」を表示する必要があります。初めてWebアプリに接続すると、ネットワークのクレデンシャルが要求されます。
サービスアカウントではなく、Windowsのユーザー名を取得することはできますか?(私はアプリにリモートで接続しています)
私が試してみました:
私は何かが足りないのですか?
注:上記のコード「NA / SRS-SA」(サービスアカウント)から取得しています
ありがとうございました!!
powershell - Powershell: runas /netonly から起動したときにデフォルトのネットワーク資格情報を検出する
現在のセッションのネットワーク資格情報を、後で渡すことができる変数にキャプチャする方法を探しています...
要点は、アカウント アクセス/権限がある外部ドメインでコマンドを実行することですが、ソース ドメインとターゲット ドメインの間に信頼関係はありません。
まず、runas コマンド (runas /netonly /user:domian\account powershell) を使用して生成された powershell 内で実行します。
ここから、ユーザー名/パスワードをコマンド ラインにハードコーディングせずに、タスク スケジューラでイベントを作成することを除いて、ほとんどすべてのことを行うことができます。
invoke-command -computer $destination -scriptblock {schtasks -ru domain\account -rp password}
私がやろうとしていることは次のようなものです
$username = Get Current Session Network Username ($(whoami) は、PowerShell ウィンドウを生成した runas アカウントではなく、実際のローカル longon アカウントを起動します)
$password = RunAs コマンドの実行時に入力されたパスワードを取得します
wcf - リフレクション、WCF Web サービス、LoadFrom アセンブリ、なんてこった。ネットワーク資格情報に関する問題
.LoadFile('from assembly') でロードされた DLL を使用して、他の webservices/db 接続を動的に呼び出すことができる WCF Web サービスを作成しました。これらのアセンブリの 1 つの内部で、別の Web サービスが次のように渡されたネットワーク資格情報を使用して動的に呼び出されます。
//残りのコード。.OpenRead で 401 エラーが発生しています (認証されていません)。
テスト コンソール アプリケーションからデバッグ モードでこれを実行し、次のようにネットワーク資格情報を作成すると、次のようになります。
これはうまくいきます。
失敗したコードは、次のように networkcredentials を提供しています
どんな助けでも大歓迎です。