質問

OK、ここに私の状況です.SP 2013 IISサイトでインストールされ実行されているASP.NET Webフォームアプリケーションがあります。 SPはWindows Authを使用するように設定されています。私はこれが非常に珍しいことであり、お勧めできませんが、今のところ私はこのように行かなければなりません。すなわち、これを変換し、他の多くのASP.NETアプリケーションをSPアプリに変更する時間がありません。やろうとしているのは、SPにログインしているユーザーを取得し、その情報を使用してASP.NETアプリケーションで認証します。また、ASP.NETでの認証を求められません。私は、SP 2013と同じIISで実行されている.NETアプリの本質的に、認証クレジストのためのプロンプトは2回目に依頼しません。しかし、トークンからユーザー情報を取得する方法は?

私はのようなコードを持っています

Dim strEmailAddress As String = HttpContext.Current.User.Identity.Name.ToLower
.

My ASP.NET(vb.net)とそれが返すものは次のとおりです。 0#.w | SMG \ MyUser

やはりITを理解するようにSPはクレームベースの認証を使用しており、これはクレームトークンです。私の質問は、このトークンを解析/受け入れる方法で、ユーザー名を取得し、それを私のASP.NETに使用する方法ですか?

NETの他の人は解決策として以下を示していますが、私のアプリはMicrosoft.SharePoint.Administration.claims名前空間を使用できないと思います。それはそれほど単純ですか?

string userName = null;
SPClaimProviderManager mgr = SPClaimProviderManager.Local;
if (mgr != null)
{
    userName = mgr.DecodeClaim(SPContext.Current.Web.CurrentUser.LoginName).Value;
}
.

私はそれを理解しているのでSpclaimProviderManagerはMicrosoft.SharePoint.Administration.Claims名前空間にありますが、私のASP.NETで参照されるのはどうやって得られますか。 SP 2013サーバー上のDLLを見つけることもできません。

役に立ちましたか?

解決 2

I was able to get this to work using the approach above outlined in my question - i was able to copy Microsoft.Sharepoint assembly from server and reference it in my ASP.NET project. The Microsoft.SharePoint.Administration.Claims namespace is found in the Microsoft.Sharepoint assembly

他のヒント

The key is to have both SharePoint and your app use the same authentication source.

So, either your app must change to Windows Auth (aka Integrated NTLM), or SharePoint must use forms (or claims that is based on the same user store).

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