문제

좋아요, 제 상황은 이렇습니다.SP 2013 IIS 사이트에 설치되어 실행되는 ASP.NET 웹 양식 응용 프로그램이 있습니다.SP가 Windows 인증을 사용하도록 설정되었습니다.나는 이것이 매우 이례적이며 권장되지 않는다는 것을 알고 있지만 지금은 이쪽으로 가야 합니다.즉.이 앱과 다른 여러 ASP.Net 앱을 SP 앱으로 변환할 시간이 없습니다.내가 하려는 것은 SP에 로그인한 사용자를 확보하고 해당 정보를 사용하여 내 ASP.Net 응용 프로그램에 인증하는 것입니다. 또한 ASP.NET에서 인증을 요청하는 메시지도 표시하지 않습니다.SP 2013과 동일한 IIS에서 실행되는 .net 앱의 특성상 두 번째로 인증 자격 증명을 묻는 메시지가 표시되지 않지만 토큰에서 사용자 정보를 얻는 방법은 무엇입니까?

나는 다음과 같은 코드를 가지고 있습니다

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

내 ASP.Net(VB.NET)에서 반환되는 내용은 다음과 같습니다.0#.w|smg\myuser

제가 알기로 SP는 클레임 ​​기반 인증을 사용하고 있으며 이는 클레임 ​​토큰입니다.내 질문은 이 토큰을 구문 분석/수락하여 사용자 이름을 얻은 다음 내 ASP.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

내 질문에 설명된 위의 접근 방식을 사용하여 이 작업을 수행할 수 있었습니다. 서버에서 Microsoft.Sharepoint 어셈블리를 복사하여 ASP.NET 프로젝트에서 참조할 수 있었습니다.Microsoft.SharePoint.Administration.Claims 네임스페이스는 Microsoft.Sharepoint 어셈블리에 있습니다.

다른 팁

핵심은 SharePoint와 앱이 모두 동일한 인증 소스를 사용하도록 하는 것입니다.

따라서 앱이 Windows 인증(일명 통합 NTLM)으로 변경되어야 하거나 SharePoint가 양식(또는 동일한 사용자 저장소를 기반으로 하는 클레임)을 사용해야 합니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 sharepoint.stackexchange
scroll top