SqlContext.WindowsIdentity プロパティ
定義
重要
一部の情報は、リリース前に大きく変更される可能性があるプレリリースされた製品に関するものです。 Microsoft は、ここに記載されている情報について、明示または黙示を問わず、一切保証しません。
呼び出し元の Microsoft Windows ID。
public:
static property System::Security::Principal::WindowsIdentity ^ WindowsIdentity { System::Security::Principal::WindowsIdentity ^ get(); };
public static System.Security.Principal.WindowsIdentity WindowsIdentity { get; }
member this.WindowsIdentity : System.Security.Principal.WindowsIdentity
Public Shared ReadOnly Property WindowsIdentity As WindowsIdentity
プロパティ値
呼び出し元の Windows ID を表す WindowsIdentity インスタンス。クライアントが SQL Server 認証を通じて認証された場合は null
。
例
次の例では、呼び出し元であるクライアントの Windows ID を取得し、クライアントの権限を借用する方法を示します。
WindowsIdentity clientId = null;
WindowsImpersonationContext impersonatedUser = null;
clientId = SqlContext.WindowsIdentity;
// This outer try block is used to thwart exception filter attacks which would prevent
// the inner finally block from executing and resetting the impersonation.
try
{
try
{
impersonatedUser = clientId.Impersonate();
if (impersonatedUser != null)
{
// Perform some action using impersonation.
}
}
finally
{
if (impersonatedUser != null)
impersonatedUser.Undo();
}
}
catch
{
throw;
}
Dim clientId As WindowsIdentity
Dim impersonatedUser As WindowsImpersonationContext
clientId = SqlContext.WindowsIdentity
Try
Try
impersonatedUser = clientId.Impersonate()
If impersonatedUser IsNot Nothing Then
' Perform some action using impersonation.
End If
Finally
If impersonatedUser IsNot Nothing Then
impersonatedUser.Undo
End If
End Try
Catch e As Exception
throw e
End Try
注釈
SQL Server内の共通言語ランタイム (CLR) コードは、常にプロセス アカウントのコンテキストで呼び出されます。 コードで、SQL Server プロセス ID ではなく、呼び出し元のユーザーの ID を使用してアクションを実行する必要がある場合は、このプロパティを使用して偽装トークンを取得する必要があります。 WindowsIdentity オブジェクトの取得後、呼び出し元は、クライアント アカウントの権限を借用して、操作を実行できます。
SQL Serverの外部から呼び出されると、a NotSupportedException がスローされます。
EXTERNAL_ACCESS
権限または UNSAFE
権限のあるアセンブリのみが、このプロパティにアクセスできます。
このプロパティは読み取り専用です。