問題タブ [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.
asp.net - Windows Identity Foundation: ASP.net で新しいセキュリティ トークンを取得する方法
Windows Identity Foundation を使用する ASP.net アプリケーションを作成しています。私の ASP.net アプリケーションは、セキュリティ トークン サービスへのパッシブ リダイレクトによるクレーム ベース認証を使用しています。これは、ユーザーがアプリケーションにアクセスすると、自動的に Security Token Service にリダイレクトされ、アプリケーションに対してユーザーを識別するセキュリティ トークンを受け取ることを意味します。
ASP.net では、セキュリティ トークンは Cookie として保存されます。
ユーザーがアプリケーションでクリックして Cookie を削除し、それらを Security Token Service にリダイレクトして新しいトークンを取得できるようにしたいと考えています。つまり、ログアウトして別のユーザーとしてログインしやすくします。コードでトークンを含む Cookie を削除しようとしましたが、何とか持続します。
ユーザーが再度ログインして新しいトークンを取得できるように、トークンを削除するにはどうすればよいですか?
c# - ユーザーが読み取りアクセス権を持っているファイルを一覧表示する (ASP.NET)
ユーザーが読み取りアクセス権を持つフォルダー内のすべてのファイルを一覧表示したいと考えています。ユーザーは Web サイトにアクセスし、サイトの一部の側面 (リンクの追加など) にフォーム認証を使用できますが、Windows 資格情報を使用して特定のフォルダー内のファイルを一覧表示したい (匿名アクセスがオフになっているため)。読めません。
ただし、 を使用する場合Directory.GetFiles
、(メタデータ (ファイルサイズ、作成日など) は読み取れますが) 読み取れないファイルも含まれます。
これは私が持っているものです:
ページにアクセスすると、現在のユーザー資格情報を使用する必要があるにもかかわらず、UnauthorizedAccessException
使用するとすぐに取得されます。asp.net アカウントにはフォルダーへのアクセス権がないためGetAccessControl
、オフにできません。コメントアウトすると、すべてのファイルが一覧表示されますusing
。FileSecurity
スタックトレース:
各ファイルを開こうとして発生する例外をキャッチすることに頼らずに、これを行う方法についてのアイデアはありますか?
security - SAML セキュリティ トークンを消費する同じアプリケーション内でどのように生成できますか?
Windows Identity Foundation を使用するように、いくつかのアプリケーションを構成しています。パッシブ リダイレクトを使用して、Security Token Service からセキュリティ トークンを取得します。これは、WIF の使用を開始する前に存在していたログオン Web サイトに WIF コードを挿入し、アプリケーション内で [Add STS Reference] を使用することで実現しました。
ただし、ログオン Web サイトを使用しないアプリケーションが 1 つあります。私がやりたいことは、ユーザーを外部 STS にリダイレクトせずに、アプリケーション自体の中でセキュリティ トークンを生成することだと思います。
外部 STS から受け取ったセキュリティ トークンにクレームを追加するために使用できる ClaimsAuthenticationManager クラスを使用して、これを達成しようとしましたが失敗しました。ただし、ClaimsAuthenticationManager はこのコンテキストでは機能しません。ClaimsAuthenticationManager をセッションごとに 1 回だけ呼び出すのではなく (期待される望ましい結果)、ページの読み込みごとに呼び出され、前のページの読み込みでユーザーに割り当てたクレームの兆候はありません。
ユーザーにデータベースからのクレームを与える外部 STS の作成を検討していますが、これは危険であると考えています。1 つの Web サイトだけのために完全に別個の STS を作成しなければならない理由はないようです。アプリケーション内でセキュリティ トークンを生成したいだけです。
c# - 別のユーザーになりすます方法は?
私は ASP.net アプリに取り組んでおり、ユーザーになりすまそうとしています
トークンを使用して windowsIdentity を作成しています
このトークンは、アンマネージ コードを呼び出すことによって取得されました
この advapi32.dll アンマネージ コードを使用せずにトークンを取得する他の方法はありますか?
tks
c# - フォーム認証を使用してログインしているときに、WindowsIdentity を使用して ASP.NET のファイル/ディレクトリのリストを取得する
編集 7:
結局、これは実行できないと思います。何らかのコマンド ライン アプリケーションを使用してこれを実行し、出力を解析する必要があるかもしれませんが、多くの人がアクセスしている場合、これは非常に遅くなる可能性がありますフォルダおよび/または NetBIOS セッションの制限に達しています。
編集 6:
Windows 統合認証 (共有とデータベースにアクセスできるアカウントを使用) を使用すると、ファイル/ディレクトリのリストを取得できます。ただし、ページを更新してUnauthorizedAccessException
. おそらく、NetBIOS または ActiveDirectory の制限です。
5か月、「偽装を使用する」以外の解決策はまだありません(組み込みの.NETの方法が非常に不安定に見えるため、P/Invokeを介してそう思われます)が、それにも同じ問題があります。ユーザー名/パスワードのハードコーディングはオプションではありません。
開発 (Windows 7) ボックス (IIS または Visual Studio を使用) に組み込まれた Web サーバー) は正常に動作します。
編集 5:
インターネットとこの質問で読んだことから、これが機能する唯一の方法は次のとおりです。
- 基本認証
- なりすまし
- Web アプリケーションと同じサーバーにファイルがある
これらはどれもオプションではありません。
- ユーザーは毎回ログインする必要があります - 欠点: 追加の障壁があり、シームレスなエクスペリエンスにする必要があります
- ユーザー名とパスワードがハードコードされている - 欠点: パスワードが変更されると、コード化されたユーザー (asp.net アカウント) はファイルにアクセスできなくなります
- Web サーバーに保存するファイルが多すぎます。ディスク容量が不足しています
UNC 共有ファイルにアクセスできる Windows フォーム アプリケーションが必要なので、これでうまくいくと思っていました。それと、Web サーバーにリモート接続して Windows エクスプローラーを使用すると、ファイルにアクセスできるという事実。
おそらく、ASP.NET/IIS のセキュリティにより、P/Invoke による偽装なしでは機能しなくなります。または、ファイアウォールによってブロックされている可能性がありますか?
編集 4:
機能することの 1 つは、基本認証を使用することです。統合 Windows 認証とダイジェスト認証は機能しません。ただし、パスワードは平文で送信され、ユーザーがページにアクセスするとプロンプトが表示されるため、これは実際にはオプションではありません (私がやりたいことではありません)。
編集3:
何を試しても、UNCパス上のファイルまたはディレクトリのリストを取得できません(これらの組み合わせと個別にオンになっています)
- フォルダーへの「Everyone」フルアクセス (読み取りだけでなく) が与えられます
- ASP.NET アカウントが「オペレーティング システムの一部として機能する」場合
- 指定された IIS_WPG グループが「オペレーティング システムの一部として機能する」
- 使用済み
<authentication mode="Windows" />
- 使用済み
<identity impersonate="true"/>
サイトへのログインに使用するのと同じアカウントでサーバーに (RDP を使用して) リモート接続すると、ファイルに問題なくアクセスできます。コードでは機能しません。
編集2:
私が試したことは次のとおりです:
- Windows 認証をオンにします。ファイルは同じマシン (UNC 共有ではない) にある場合にのみアクセスでき、データベースに接続できません。
- フォーム認証をオンにすると、データベースに接続できますが、ファイルにはアクセスできません (
InvalidCastException
ID が になったためGenericIdentity
)
ロールを追加する方法がないため、Windows 認証を使用できません。ユーザー名/パスワードの入力を求めたくないのは、これは追加の手順であり、安全な接続 (SSL など) を介していないためです。また、ASP.NET アカウントにファイルへのアクセス権を与えることもできません (私はドメイン管理者ではないため)。
編集:
パスは UNC パスであり、ローカル PC 上ではありません。
フォーム認証を使用してWindowsIdentity
、Visual Studio で現在のユーザー ID を にキャストしてデバッグしようとすると、InvalidCastException
. 私は単に持っています:
次に、私が得るエラーは次のとおりです。
ASP.NET アカウントはこれらのファイルにアクセスできないため、偽装を使用してファイルのリストを取得しています。IIS を使用している場合は機能しますが、Visual Studio では機能しません。
に追加<identity impersonate="true" />
してweb.config
も何も実行されませんが、ASP.NET アカウントを使用してデータベースにクエリを実行しているため、実行したくありませんが、ユーザーにはアクセス権がありません (結果としてLogin failed for user 'NT AUTHORITY\ANONYMOUS LOGON'
)。
web.config を介して Windows 認証をオンにするUnauthorizedAccessException
と、リモート共有からファイルのリストを取得しようとすると取得されます (クライアント PC の同じユーザーとして IIS ボックスにリモート接続した場合は、そうでなければアクセスできます)。
さらに、ASP.NET アカウントは Active Directory でセットアップされたアカウントであり、IIS に対してローカルではありません。
asp.net - 統合Windows認証とasp.netを使用すると、ユーザーはパスワードを変更し、再度ログインするように求められます。なぜ?
Windows認証を使用するアプリケーションに取り組んでいます。このアプリケーション内で、ユーザーがパスワードを変更できるようにします。
ユーザーはパスワードを問題なく変更できます。しかし、彼らがパスワードを変更した後、それは物事が奇妙になるときです。
時々彼らはアプリケーションをうまくナビゲートすることができます。また、リンクをクリックすると、すぐにクレデンシャルを入力するように求められます。リンクをクリックできるのはたまにだけですが、2回目のクリックで、資格情報を入力するように求められます。
ブラウザは元の資格情報のトークンを保持し、次のページを要求するときにこれを使用しますか?この場合、なぜ時々サイトを使い続けることができますか?パスワードを変更してから、そのトークンをリクエストに割り当てることはできますか?
誰か提案がありますか?
.net - 例外を発生させずに Windows Identify Foundation でアクセスを管理するにはどうすればよいですか?
Windows Identity Foundation (WIF) には、 というクラスがありClaimsPrincipalPermission
ます。MSDN のドキュメントは非常にまばらです。それは述べています:
ClaimsPrincipalPermission は、リソースへのアクセスに必要なアクセス許可を表します。ClaimsPrincipalPermission は、アクセスするリソースを表す文字列と、リソースに対して実行するアクションを表す文字列を受け取ります。Demand が呼び出されると、プリンシパルは、指定されたリソースに対して指定されたアクションを実行するためのアクセス許可を持っている必要があります。そうでない場合、Demand は例外をスローします。
これはカッコいい。関数に属性を設定して、許可されたユーザーだけがその関数を呼び出せるようにすることができます。この機能を動作させるのに問題はありません。
ただし、別の問題があります。特定のユーザーのみがアクセスできる多くの機能を備えた Web アプリケーションに取り組んでいます。ログインしたユーザーがアクセスできる機能を備えたページへのリンクのみを表示するようにページをコーディングしたいと考えています。
ClaimsPrincipalPermission でこれを行う唯一の方法は、次のことです。
私の上司は、そのような「例外によるコーディング」は容認できないことを私にはっきりと伝えました。この種のものを小さなライブラリにカプセル化できると確信していますが、WIF がこれにどのように使用されることを意図しているか知りたいです。
ところで、WIF で特定の Web ページへのアクセスを自動的にチェックできることは承知していますが、このプロジェクトのアーキテクトは、Web ページの URL ではなく、制限する機能の名前を指定したいと考えています。
どうするのが一番いいですか?
アップデート
これまでのところ、私が見つけた最善の方法は、結果を軽減するために例外によってプログラミングをカプセル化することです...
delphi - レジストリReadStringメソッドは、Delphi7のWindows7では機能しません
次のコードサンプルは、以前はWindows IDを返していましたが、現在は機能せず、空の文字列を返します。理由はわかりません。
誰でも助けることができますか?
c# - NServiceBus - WindowsIdentity がクライアントから流れるようにバスを構成する方法
クライアントでバスをセットアップしましたImpersonateSender(true)
私のサーバーは構成AsA_Server
されています。デフォルトではImpersonateSender(true)
私は今、ハンドラ内から WindowsIdentity を取得しようとしています
しかし、これは私にヌルを与えています。
私は何を間違っていますか?
.net - フェデレーション認証トークンはどこに保存されますか[WIFSTS]?
私はWIFを探求し始めましたが、次のことに疑問があります。
Windows Identification Foundation [WIF]で、セキュリティトークンサービス[STS]を調べて、フェデレーション認証トークンが保存されている場所を知りたいですか?
私はそれがブラウザのクッキーにあると思います、もしそうなら、誰かがそれについての洞察を私に教えてくれますか?