2009-02-03 3 views
3

.NET의 인증, 멤버쉽 및/또는 프로필 공급자 기능을 활용하여 .NET 웹 응용 프로그램을 회사의 엔터프라이즈 포털에 통합 할 수 있는지 궁금합니다. 요컨대, 포털은 사용자 이름, 사용자 프로필 데이터 및 일부 액세스 권한과 같은 필드에 대해 포털의 '뒤에있는'모든 응용 프로그램에 사용자 지정 헤더 값을 보냅니다. 포털에서 제기 된 한 가지 문제는 주로 사용자가 이미 인증했음을 신뢰하는 "포털 인식"으로 설계되지 않았기 때문에 웹에서 사용할 수있는 많은 .NET 응용 프로그램을 활용할 수 없다는 것입니다.포틀릿에 대한 .NET 인증, 멤버쉽, 프로필 공급자?

사용자 인증 공급자를 작성하여 (또는 양식 auth를 어떻게 든 활용하여) 머리글 (IP)을보고 해당 사용자로 자동 인증 할 수 있습니까? 내 생각에 프로필 공급자, 회원 서비스 제공자, 그리고 어떻게 든 인증을 추가하면 Oxite 블로그 (.net mvc demo)와 같은 멋진 구성 요소를 다운로드하고 공급자를 내 맞춤 설정으로 전환하고 활용할 수있게됩니다. 최소한의 코드 변경으로 회사 포털 뒤에 있습니다.

이 말이 맞는가요? 나는이 구성 요소가 어떻게 퍼즐에 들어 맞는지 이해하지 못할 수도 있다고 생각합니다.

답변

3

.NET 응용 프로그램을 전혀 변경하지 않고이 작업을 수행 할 수 있다고 생각하지 않지만 최소한의 변경만으로 수행 할 수 있다고 생각합니다. 포털 게이트웨이가 .Net 웹 응용 프로그램으로가는 모든 것을 가정하고 있습니다. 즉, 포털은 브라우저에서 모든 HTTP 요청을 가져 와서 헤더를 추가하고 .Net 앱에 요청을 제출하고 .Net 앱에서 응답을받으며, 몇 가지를 다시 작성한 다음 브라우저에 정보를 반환합니다. .

나는 지금 당신이 포털의 포틀릿에이 .Net 앱을 포함시키는 것 (이 질문을 쓴 이유)이 무엇인지 생각하고 있습니다.하지만 누군가가 당신의 포털에 로그인하더라도 포털에서는 포틀릿 상자 안에 외부 .Net 로그인 화면이 표시됩니다. 별로 좋지 않습니다.

여기에서주의해야 할 두 가지 단계가 있습니다

  1. 다시 할
  2. 가 함께 작동하는 사용자 지정 멤버 자격 공급자를 만들 자동 로그인 포틀릿 사용자에게 닷넷 응용 프로그램의 로그인 페이지를 # 1

1. 다시 할 자동 로그인 포틀릿 사용자에게 닷넷 앱 로그인 페이지 것은

찾기 .Net 앱용 로그인 페이지. 아마도 login.aspx와 같은 것이 될 것입니다. 이 파일 (및 연관된 코드 숨김 파일)을 portallogin.aspx 및 portallogin.cs에 복사하십시오. portallogin.aspx 및 portallogin.cs 파일을 엽니 다. 거기에있는 모든 컨트롤과 코드를 제거하십시오. 아래 내용을 확인하십시오. PORTAL_SomeFunctionName이 보이는 곳이면 어디서나 적절한 함수 호출을하는 Portal SDK의 코드로 바꿔야합니다.

const string specialpassword = "ThisPasswordTellsTheBackendSystemThisUserIsOK"; 

Page_Load() 
{ 
    if (PORTAL_IsLoggedInToPortal()) 
    { 
    string username = PORTAL_GetCurrentUserName(); 
    // Authenticate the user behind the scenes 
    System.Web.Security.FormsAuthentication.SetAuthCookie(username, false); 
    System.Web.Security.FormsAuthentication.Authenticate(username, specialpassword); 
    } 
    else 
    { 
    throw new Exception ("User isn't coming from the Portal"); 
    } 
} 

다음으로.NET 응용 프로그램을 열고 로그인 페이지가 login.aspx 대신 portallogin.aspx임을 알립니다. 자동으로 사용자가 로그온을 시도 알아서해야

.

2. 사용자 정의를 작성해야합니다 곳입니다 # 1

과 함께 작동하는 사용자 지정 멤버 자격 공급자 만들기 멤버십 제공자. 이 작업을 수행하려면 작업중인 .Net 응용 프로그램이 멤버 자격 공급자를 사용하고 사용자 지정 멤버 자격 공급자를 사용할 수 있어야합니다.

새 멤버쉽 공급자를 만드십시오. 클래스를 만들고 System.Web.Security.MembershipProvider에서 상속해야합니다. 최소한 GetUser 및 ValidateUser 함수와 ApplicationName 속성을 구현해야한다고 생각합니다. 아래는 그들이 어떻게 볼 수 있는지에 대한 몇 가지 아이디어입니다. 오버라이드 (override) 할 필요가있는 많은 함수가 있습니다 만, Stub (NotImplementedException (을)를 수반하는)는 아마 혼자 남겨 둘 수 있습니다.

public override string ApplicationName 
    { 
     get 
     { 
      return "Portal"; 
     } 
     set 
     { 
      ; 
     } 
    } 

    private const string specialpassword = 
     "ThisPasswordTellsTheBackendSystemThisUserIsOK"; 

    public override bool ValidateUser(string username, string password) 
    { 
     // If the password being passed in is the right secret key (same 
     // for all users), then we will say that the password matches the 
     // username, thus allowing the user to login 
     return (password == specialpassword); 
    } 

    public override MembershipUser GetUser(string username, bool userIsOnline) 
    { 
     string email = PORTAL_getemailfromusername(username); 

     System.Web.Security.MembershipUser u = new MembershipUser(
     this.name, username, username, email, "", "", true, false, 
     DateTime.Now(), DateTime.Now(), DateTime.Now(), 
     DateTime.Now(), DateTime.Now(), DateTime.Now() 
     ); 
     return u; 
    } 

또한 닷넷 RoleProvider과 ProfileProvider 유사한 구현은 해당 기능이 닷넷 응용 프로그램과 통합에 도움이 될 것입니다 할 수 있다면. (역할 공급자는 그룹 회원 정보를 제공 할 것이며 ProfileProvider는 전자 메일 주소, 우편 번호 또는 각 사용자에게 제공 할 다른 속성과 같은 프로필 정보를 추가로 제공합니다. 데이터베이스 또는 포털 HTTP 헤더 정보에서.

기타 고려 사항

이 외부 닷넷 응용 프로그램에 대한 타사 인증 공급자를 사용하고 있기 때문에, 당신은 당신이 닷넷을 말할 수있는 방법을 강구해야 응용 프로그램 사용자/그룹이 관리자 인 경우. 제 3 자 .Net 응용 프로그램에서 해당 사용자를 찾아야합니다. 필요한 권한이있는 경우 필요합니다. d .Net 응용 프로그램에서 계정이있는 것 이상으로 무엇이든 할 수 있습니다.

포털에서 이것을 사용하고 있기 때문에 몇 가지 방법을 사용할 수 있습니다. 닷넷 웹 애플리케이션 전체를 보여주는 하나의 큰 포틀릿 만있을 수 있습니다. 닷넷 웹 애플리케이션의 조각을 보여주는 작은 포틀릿을 많이 가질 수도있다. 어쨌든 포털 페이지의 작은 포틀릿 상자 안에 완전한 .Net 애플리케이션을 넣을 때 포털이 제대로 렌더링 할 수 있는지 여부를 고려해야합니다. 이상하게 보이거나 작동하는 HTML을 얻는다면 그것을 고치기가 짜증나게됩니다. 원본 .Net 웹 응용 프로그램을 수정하여 다른 HTML을 작성하거나 IIS에 모듈을 추가하여 HTML을 즉시 작성할 수 있습니다 (모듈이라고는 완전히 확신 할 수 없습니다 ...). IIS에서 어떻게하면이 일을 할 수 있는지 알아낼 수 있습니다.)

휴!

나는 모든 것을 다루지는 않지만 Microsoft의 SQL Server Reporting Services에 대한 인증 소스로 Plumtree Portal (현재 BEA의 Aqualogic User Interaction)을 설정하는 데 협력 해 왔으며 Custom Dynamics NAV 테이블에 저장된 사용자 멤버십을 기반으로하는 IIS 용 인증 공급자입니다. 이 프로젝트에 대한 내 경험이이 외부 .Net 응용 프로그램을 포털과 통합하는 데 도움이되기를 바랍니다.

Tim 
+0

예, Plumtree/ALUI/Webcenter 상호 작용에 대한 질문이었습니다. 문. 나는이 유형의 질문이 의미가있는 유일한 포털이라고 생각합니까? – Joel

1

나는 좋은 생각이라고 생각합니다. 회원 공급자가 분명히 필요하며 다운로드하는 모든 .Net 웹 앱에 대한 인증이 '양식'으로 설정되어 있는지 확인하십시오.

새로 생성 된 파이프 라인은 모든 처리기 (CGI 등)에서 .Net 기반 인증 유형을 사용할 수 있기 때문에 IIS7도 확인하십시오. 예를 들어 PHP 응용 프로그램에 대해 Windows 인증을 사용할 수 있습니다.

+1

밀도가 높다는 점에 유감 스럽지만 올바른 방향으로 나를 가리키는 링크가 있습니까? 나는 양식을 보여주지 않는 양식 인증의 예를 찾으려고 노력 중입니다. 머리말 등을 기반으로 사용자의 자동 기록을합니다. – Joel

0

다른 답변이 누락되었습니다. 사소한 점은 asp.net에서 폼 인증이 상호 인증을 지원한다는 것입니다.

폼 인증 태그에는 도메인 및 쿠키 이름 속성이 있습니다.

이 동일한 기기 키를 사용하여 &과 일치하면 앱간에 상호 인증이 허용됩니다.

각 사이트의 멤버 자격 공급자는 동일한 데이터 저장소를 가리켜 야합니다.

관련 문제