コードが実行されるユーザー名/ accountnameをチェックする方法
-
10-12-2019 - |
質問
私たちはコードを貼り付けてコードを貼り付けることができるコードの一部を望み、どのコードが実行されるユーザー名を取得します。
-
タイマージョブ
-
イベント受信機
-
ウェブパート
-
レイアウトアプリケーションページ
-
ユーザ制御
-
jsom
その後、RWEPを使用し、再度どのユーザー名コードが実行されているかを確認します。
どのようなスニペットを使いますか?
更新
ログインユーザーのユーザー名を私に与えるコードを望みません。コードが実行されるアカウント名を教えてください。
更新
アプリケーションページの場合:
.SPUser user1 = SPContext.Current.Web.CurrentUser; string userName1 = user1.Name;
値として値を付与します。ログインユーザー名。
.SPSecurity.RunWithElevatedPrivileges(delegate() { using (SPSite site = new SPSite(idd)) { using (SPWeb rootWeb = site.OpenWeb()) { SPUser user2 = SPContext.Current.Web.CurrentUser; string userName2 = user2.Name; } } });
値として値を付与します。ログインユーザー名。
.var User = System.Security.Principal.WindowsIdentity.GetCurrent().User; var UserName = User.Translate(typeof(System.Security.Principal.NTAccount)).Value;
値として値を与える:NT Authority \ IUSR
.SPSecurity.RunWithElevatedPrivileges(delegate() { using (SPSite site = new SPSite(idd)) { using (SPWeb rootWeb = site.OpenWeb()) { var User12 = System.Security.Principal.WindowsIdentity.GetCurrent().User; var UserName12 = User12.Translate(typeof(System.Security.Principal.NTAccount)).Value; } } });
値として値を与える:servername \ spadminaccountname
更新
(私たちの場合はサイトコール。管理者のユーザー名はWebアプリケーションAppPoolのユーザー名と同じであるため、本当にどのアカウントですか?)
1)コードが実行されている認証情報が「NT Authority \ IUSR」であり、RWEPを使用すると、ユーザーは 'webApp / sitecol管理ユーザーAnount'です。たとえば、サーバー上のファイルにアクセスしているとします。次に、上記の2アカウントを使用してファイルにアクセスし、ログインユーザーのアカウントではありません。
2)SharePointリソースにアクセスするときにどのアカウントが使用されますか?上記2のうちの1つ、またはログインしているユーザーの資格情報ですか?
解決
NotVonkaiserこの場合は正しいです:
1ファームアカウントで実行され、他のすべてのものはユーザーアカウントに記録されています。
ログインしたユーザーアカウントは、サーバー上の認証を受けているサーバー上のNT / Authenticatedアカウントを呼び出します。それが理にかなっているなら;)
NT / Authenticatedを検討してください。このような特定のタスクをサーバーにログオンしているかのように、デスクトップPCの電源投入時にデスクトップPCにロゴを起動します。
だからこれを明確にするために:
2-6 NT認証を持つユーザーアカウントにログインした現在のログイン中で実行(どのリソースにアクセスできます)
今これを言って、あなたが設定したものに応じて、web.configおよびcasポリシー(コードアクセスセキュリティポリシー)を備えたもう1つの要因があります(完全、部分的、低)。 ログインしている現在のアカウントの下のリソースに持つアクセス権を決定します。
w3wp.exeの中に表示されます(アセンブリ内の.csコード(アセンブリ内))...これはアプリケーションプールアカウントで実行されます。しかし、ログインユーザーが 'NT Authority \ IUSR'の一部でない限り、これは稼働しません。それは1つまたは他のものではありませんが、どちらも使われているのと同じくらいです。展開の面では、フルトラストの間の唯一の違い 実行モデルとBIN / CAS実行モデルは場所です。 アセンブリとコードアクセスセキュリティポリシーを展開します。 その場所に関連付けられています。どちらの場合も、コンパイルされていない項目ではありません。 ASP.NETマークアップファイル、XMLファイル、またはリソースファイルなど、 通常、各WebフロントエンドのSharePointルートにデプロイされています サーバ。ファームのいずれかを使用してファームソリューションを展開したい場合 ソリューション実行モデルは、サーバーファイルにアクセスできる必要があります。 システムとファーム管理者セキュリティグループのメンバーになります。
> http://msdn.microsoft.com/en-us/library/ FF798412.aspx
ほとんどのコードは、現在ログインしているユーザーアカウントの下で実行されます。
今私が信じる質問には、より複雑で深く、それはあなたがそれを探していることを労働者プロセスで志を持っていることを信じる!
それで、マシンにログインする - >アカウント(NT認証)を認証するgoto SharePointサイト - >ワーカープロセスw3wp.exeの下で実行されているジョブを実行する以上のもので、これはあなたが参照すると思いますか?
ワーカープロセスは、要求を処理する役割があるユーザーモードコードです。 ISAPIを呼び出す静的ページを返すための処理要求など 拡張子またはフィルタ、またはCommon Gatewayインタフェースの実行(CGI) ハンドラ
両方のアプリケーション分離モードでは、ワーカープロセスが制御されます WWWサービスによって。ただし、ワーカープロセス分離モードでは、A ワーカープロセスは、w3wp.exeという名前の実行可能ファイルとして実行され、IIS 5.0分離モードでは、ワーカープロセスはinetinfo.exeによってホストされています。図2.2は、IIS 5.0の分離モードのアーキテクチャを示し、ワーカープロセスとの関係を示唆するために破線を使用します。 WWWサービス。
ワーカープロセスはhttp.sysを使用して要求を受け取り、送信する HTTPを使用して応答。ワーカープロセスもアプリケーションコードを実行します。 ASP.NETアプリケーションやXML Webサービスなど。設定できます 異なるアプリケーションに役立つ複数のワーカープロセスを実行するIIS 同時にプール。この設計はプロセスによってアプリケーションを分離します 境界と最大Webサーバーの信頼性を達成するのに役立ちます。
デフォルトでは、ワーカープロセス分離モードでのワーカープロセスが実行されます。 最も強いセキュリティを持っているネットワークサービスアカウントの下で 必要な機能と互換性のある(最小アクセス)
だからIISワーカープロセスは、下部にコードを実行するが、最初の場所でこれを行うためにこれを行うにはRegarlessが認証されている必要があります。
次のリンクはより良い理解を示しています!
> http://msdn.microsoft.com/en-us/library/ FF798428.aspx
編集
1)コードが実行される資格情報があると結論付けることができます。 'NT Authority \ IUSR'とRWEPを使用した場合、ユーザーは 'webApp / sitecol管理ユーザーAnount'?たとえば、私たちがそうであるとします サーバー上のファイルにアクセスすると、上記の2つのアカウントが使用されます ファイルにアクセスするには、ログインユーザーのアカウントではありません。
OK私はあなたが混乱していると思いますか?
これには2つの段階があります。ユーザーがマシンにログインしますか?そのユーザーがアクセス権を持っていて、「NT Authority \ IUSR」の一部であるため、SharePoint内の「NT Authority \ IUSR」になることを要求する特定のリソースにアクセスできます。
RocimeLTを使用しているログインアカウントを知っています。Webアプリケーションプールアカウントになるユーザー名を使用してください。
2)SharePointリソースにアクセスするときにどのアカウントが使用されますか?それは...ですか 上記2の1つかログインしているユーザーの資格情報?
SharePointリソースはログインユーザーによってアクセスされます。上記と同じです。
他のヒント
1は常に農場口座の下で走るべきです。
2,3,4、および5では、このコードを使用してこの情報をアウトすることができるはずです。
SPUser user = SPContext.Current.Web.CurrentUser;
string userName = user.Name; //you can also call user.Email here
.
「RunWithElevatedPrivileges」デリゲートブロックがある場合、これはが正しく機能します。むしろ、デリゲートブロック内で呼び出すと、コードを実行しているアカウントの名前が取得されます。その場合はユーザー名を指定する必要がある場合は、デリゲートブロックを実行する前または後に「SPContext」オブジェクトを呼び出します。オブジェクトを直接デリゲートブロックに渡すことはできませんが、が文字列に必要なものを抽出することができるか、 inを送ってください。
このスクリプトがマスターページに固執するか、マークアップに 'SharePoint:ScriptLink'ブロックを追加することによって、SP.jsがプリロードする必要があります。