現在認証されている Sharepoint ユーザーを asp.net ページ ビューアー Web パーツから表示する

StackOverflow https://stackoverflow.com/questions/112818

質問

ページ ビューアー Web パーツを使用して SharePoint サイトに埋め込む必要があるスタンドアロンの asp.net ページを作成しています。asp.net ページは、別のポート上の同じサーバーに公開され、埋め込む URL が提供されます。

要件は、ユーザーが Sharepoint 認証を使用して認証された後、その他のオプションの asp.net Web パーツを含むページに移動することです。

この asp.net ページから行う必要があるのは、Sharepoint で現在認証されているユーザー名をクエリし、これを asp.net コードからページに表示することです。

VS からアプリケーションをデバッグする場合、これはすべて正常に機能しますが、Sharepoint 経由で公開および表示すると、ユーザーとして常に NULL が取得されます。

これを機能させるための最良の方法についての提案をいただければ幸いです。

役に立ちましたか?

解決

現在認証されているユーザーを SharePoint コンテキストから取得する場合は、SharePoint コンテキスト内に留まる必要があります。これは、カスタム Web アプリケーションを SharePoint 内でホストすることを意味します (「 http://msdn.microsoft.com/en-us/library/cc297200.aspx)。次に、カスタム アプリケーション参照 Microsoft.SharePoint から、SPContext オブジェクトを使用してユーザー名を取得します。例えば:

SPContext.Current.Web.CurrentUser.LoginName

ページ ビューアー Web パーツを使用して、SharePoint コンテキスト内に配置されたサイトの URL を参照することもできます。

他のヒント

たくさんの回答ありがとうございます!

asp.net ページが Sharepoint サイトと同じ URL とポートを使用している限り、認証は両方のサイトで機能することがわかりました。

解決策は、SharePoint サイト内の仮想ディレクトリを使用し、そこに asp.net ページをインストールすることです。

デバッグで動作する場合、それは SharePoint で使用されていますか?

認証に関する限り、ページと Sharepoint サイトは別のサーバー上にある場合もあります。情報を取得するには、可能であれば Web パーツから QueryString を介して情報を渡す必要がある場合があります。これを行うには、独自の Web パーツを作成します (ユーザー名を渡す QueryString を使用して、src がページに設定されたパーツに IFRAME を配置するだけです)。

ただし、その名前を何かに使用するとセキュリティ上の問題になるようです。単に表示するだけであれば、おそらく問題ありません。

実際に認証が必要な場合は、スタンドアロン ページをホストしているサイトの web.config に認証を追加する必要がある場合があります。

編集:ページを SharePoint と同じポートとサーバーに配置するとうまくいくと思います。

SharePoint に対して現在認証されているユーザー名を具体的にクエリするのは難しいと思います。あなたが説明しているような別のWebアプリケーションからSharePointコンテキストに簡単にアクセスする方法は思いつきません。

どのような種類の認証スキームを使用しているかわかりませんが、Kerberos の使用を検討するとよいでしょう。委任を許可し、アプリケーション間で資格情報を渡すことで、この種のシナリオが少し簡単になることがわかりました。またはサーバーからサーバーへ。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top