問題タブ [security-identifier]
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.
windows-identity - Windows Identity SID
アカウントが作成されると、Windowsアカウント(ローカル、ドメイン、Active Directory)のSIDが変更されたことはありますか?はいの場合、どのような条件下で。
windows-authentication - SecurityIdentifier からユーザー名を取得する
ユーザーがデータベースに保存されるレポートを作成する Web サイトで Windows 認証を使用しています。レポートを保存するときに、どのユーザーがレポートに記入したかを知りたいので、WindowsIdentity の SecurityIdentifier をデータベースに保存して、レポートに記入したユーザーを特定しています。現在の Windows ユーザーの SecurityIdentifier 値を取得するために使用するコードは次のとおりです。
質問
ユーザー名やその他の値の代わりに SecurityIdentifier をデータベースに保存することで正しいことをしていますか? この種の状況で従うべきベストプラクティスは何ですか?
保存した SecurityIdentifier 値からユーザーのユーザー名を取得するにはどうすればよいですか?
c# - Cassini-dev の NTLM 認証における SecurityIdentifiers
Cassini-dev の NTLM 認証クラスのこのコード ブロックでは、( Interopを介して) SECUR32.DLL への呼び出しが行われ、HTTP 要求のAuthorization
ヘッダー内の base64 でエンコードされたデータが認証されます。AcceptSecurityContext()とQuerySecurityContextToken( )の両方が を返す0
場合、クライアントは承認されています。最後に、セキュリティ コンテキスト トークンから がSecurityIdentifier
抽出されます ( _sid変数)。(一般的なセキュリティ IDについて少し)
NtlmAuth クラスの関連セクションは次のとおりです。
Request Classでは、NtlmAuthTryNtlmAuthenticate()
が使用されているメソッドで、NTLM 認証の 3 つのステップを正常に完了した後、最終的な403を返すか要求を満たす前に、1 つの最終チェックが行われています。
ここで、_host.GetProcessSid()はSecurityIndentifier
Cassini プロセスの所有者 (私) のものであり、auth.SIDはSecurityIdentifier
認証されたユーザーのものです (上記のNtlmAuthクラスの _sid )。これら 2 つの SID が同じでない場合、403 が返されて認証が停止します。それ以外の場合、要求はブラウザーに提供されます。
私の質問は次のとおりです。
- 2 人の異なるユーザーの SecurityIndentifier を比較する必要があるのはなぜですか? Cassini プロセスを所有するユーザーではないユーザー/パスワードで NTLM 認証を試みると、これは失敗します (403 を返します) 。
- これが本当に意図された動作である場合、Cassini が Windows サービスとして実行される場合、ホスト SID がS-1-5-18 (または、OS のバージョンによっては同様のもの) になるため、誰もログインできなくなります。誰もオペレーティング システムとしてログインできません。これは Cassini の NTLM 認証実装の一部にすぎませんか? Cassini を正しく使用していませんか?
- これが明らかに意図した動作ではない場合、SecurityIndentifiers はこのコンテキストでどのような役割を果たしますか? 特定のクラス/グループのクライアント SID を受け入れるために、ホスト SID が特定のクラスまたはグループである必要があることを確認するために、追加のチェックを行う必要がありますか? ホスト/クライアント SID を処理する場合、OS バージョン (XP/Vista/7) の影響はありますか?
- それとも、SecurityIdentifiers は保存も受け渡しもされておらず、ユーザー/クライアントをさらに識別するために使用されていないため、ここでは SecurityIdentifiers の適切な使用法はありませんか?
更新: cassinidev フォーラムの誰かが 2010 年にこの SID チェックを削除するパッチ(パッチ #6604) を提案したようですが、まだ評価中です。
c++ - Windows ログイン ユーザーの一意の ID
Windows クライアント アプリケーションを作成していますが、アプリケーションによって生成されないグローバルな一意の識別子が必要です (GUID を生成してローカルに保存したくありません)。
また、各アプリケーションは Windows ユーザーごとに個別にインストールされます。
マシンを一意に識別することに問題はありませんが、ユーザーを一意に識別するかどうかはわかりません。ログインしているユーザーの SID (セキュリティ識別子)を使用できますが、SID の寿命がわかりません。
ユーザーごとの SID は一定ですか? それとも、セッションごとに変わるのでしょうか?
永久 ID でユーザーを一意に識別する方法についてのアイデアはありますか?
(リピーターを検出できるように、既存の識別子が必要です) Windows XP から Win7 までサポートされる必要があります。
ありがとう、
c# - SecurityIdentifier.Translate(typeof(NTaccount)) バグ?
SID から NTAccount への変換を行うときは、次のコードを使用します。
NTAccount
はい、メソッドから fromを取得できることは認識していますがfolder_sec.GetAccessRules
、同じサブルーチン forSecurityIdentifier.Translate
が使用されており、同じバグが発生していることを発見しました。結局のところ、ACL は単なる SID 配列です。
バグは、まったく同じ名前の 2 つのアクティブ ディレクトリ オブジェクト (グループ、ユーザーなど) があるが、2 つの別個のドメイン (サブドメインではなく信頼ドメイン) にある場合、translate
メソッドが間違った NTAccount を返すことです。コードを実行しているマシンが存在するドメインで同じ名前の NTAccount を返すことになります。NTAccount
ドメイン内の別のオブジェクトと同じ名前を共有していない他のドメインから を取得すると、正常に返されます。
domain_frank にあるマシン上にディレクトリがあり、これが ACL であるとします。
- domain_frank\IT チーム
- domain_bob\IT チーム
- domain_frank\Dave
- domain_bob\テッド
上記のコードを実行すると、次のようoutput
になります。
Dave という名前のオブジェクトが domain_bob になく、Ted という名前のオブジェクトが domain_frank にないと仮定します。しかし、SID を見ると、ドメイン セクションが完全に異なっていることがはっきりとわかるので、正しいオブジェクトが少なくとも SID の ACL にあることがわかります。ルックアップに関係する何かが壊れています。
その結果、SID を確認し、SID が属するドメインで Active Directory ルックアップを行う独自のアルゴリズムを作成する必要がありました。非常に遅く、完全な痛みです。
これは既知のバグですか?満足のいく解決策はありますか?
security - VIP カードが検証にどのように役立つか?
(接続されていない) Verisign Identity Protection カードからランダムに生成された 6 桁のセキュリティ コードは、どのようにユーザーの検証に役立ちますか?
VIP カード/デバイスから値を生成する代わりに、ランダムな 6 桁の値を入力できないのはなぜですか?
サーバーがその番号を確認できるように、その VIP デバイス/カードからこれらの値を取得する固定パターンはありますか?
active-directory - 外部セキュリティ プリンシパルへのアクセス
michael@mycontoso.com
objectSid を持つユーザーを検索するとS-1-5-21-1234567890-123465789-123456789-123456
、 Foreign Security Principal しか見つかりませんCN=S-1-5-21-1234567890-123465789-123456789-123456,CN=ForeignSecurityPrincipals,DC=contoso,DC=com
。その外部セキュリティ プリンシパルには、読み取る必要のあるプロパティが含まれていないため、その FSP の「ホーム AD」にアクセスする必要があると思います。
FSP には、常にユーザー オブジェクトの LDAP パスを含むプロパティがありますか? Home AD にアクセスするための標準化された/推奨される方法はありますか?
c# - Samba の S-1-22-[12]-* SID を名前にマッピングする
Samba3 は、ユーザーには S-1-22-1 の範囲、グループには S-1-22-2 の範囲の SID を使用します。たとえば、S-1-22-1-1-10042 は uid 10042 を持つ UNIX ユーザーです。 Windows アカウントのこの機能と同様に、そのような SID を「myunixaccount」のような名前にマップできるようにしたいと考えています。マッピング:
Windows 自体はこのマッピングを行うことができますが、マッピング アルゴリズムを見つけることができないようです。
追加: 環境の説明
Convert SID to Username in C# で提案されたソリューションをテストしました。役に立ちませんでした。したがって、いくつかの追加の環境の説明:
- W7 Professional、x86 を実行するドメインまたはスタンドアロンに参加している Windows PC。
- Samba ベースのドライブにあるファイル。Samba はドメインの AD コントローラーに対して認証を行います。
- Samba バージョン: 4.0.3、Linux 2.6.18-238、x64 で実行。
- Samba 用の PAM、対話型セッションなど。
- AD コントローラは W2012 であり、ディレクトリにデフォルトの UNIX 拡張属性がいくつかあり、UID などのマッピングを許可します。
- .NET Framework ライブラリ 4.5.2。
- ldap.conf:
piece of ldap.conf
Windows 認証を使用した UNIX での対話型ログオンは正常に機能します。Samba 共有の dito。ドメインで PC を使用する場合、資格情報は要求されません。
一部のサンプルでは、ユーザー gle3 (1 で強調表示) もドメインに存在しますが、SID が異なります。ここで使用される SID は、S-1-22-1-1-10001 などの Samba SID です。
(2) では、使用されている passwd 構成にユーザーが存在することがわかります。もちろん、次の結果は得られません: grep gle3 /etc/passwd
、エントリはリモート サーバーから使用されるためです。リモート サーバーは、gle3 のユーザー SID を UNIX uid 10001 およびデフォルト グループ 10003 にマップします。
(3) では、既定のグループが存在しないことがわかります。これが、アクセス許可がそれを名前に解決できない理由です。
明らかに、Windows は何らかの方法でファイル サーバーに「これらの SID のデータを提供してください」と尋ね、Samba ファイル サーバーは何らかの方法で応答します。その最後のものの名前。
active-directory - Win2K8 R2、順不同の SID
ドメインの SID の順序が間違っているのはなぜですか? 順不同とは、最近作成されたいくつかのアカウントの相対 ID (SID の最後の部分) が、はるかに古いアカウントのものよりも低いことを意味します。私は常に、相対 ID が純粋に単調な優勢な方法で割り当てられていると考えていました。
私はグーグルで検索しましたが、手がかりが見つかりませんでした。何か案が ?
Windows 2008-R2、5 DC。