.NET 응용 프로그램을 전혀 변경하지 않고이 작업을 수행 할 수 있다고 생각하지 않지만 최소한의 변경만으로 수행 할 수 있다고 생각합니다. 포털 게이트웨이가 .Net 웹 응용 프로그램으로가는 모든 것을 가정하고 있습니다. 즉, 포털은 브라우저에서 모든 HTTP 요청을 가져 와서 헤더를 추가하고 .Net 앱에 요청을 제출하고 .Net 앱에서 응답을받으며, 몇 가지를 다시 작성한 다음 브라우저에 정보를 반환합니다. .
나는 지금 당신이 포털의 포틀릿에이 .Net 앱을 포함시키는 것 (이 질문을 쓴 이유)이 무엇인지 생각하고 있습니다.하지만 누군가가 당신의 포털에 로그인하더라도 포털에서는 포틀릿 상자 안에 외부 .Net 로그인 화면이 표시됩니다. 별로 좋지 않습니다.
여기에서주의해야 할 두 가지 단계가 있습니다
- 다시 할
- 가 함께 작동하는 사용자 지정 멤버 자격 공급자를 만들 자동 로그인 포틀릿 사용자에게 닷넷 응용 프로그램의 로그인 페이지를 # 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
예, Plumtree/ALUI/Webcenter 상호 작용에 대한 질문이었습니다. 문. 나는이 유형의 질문이 의미가있는 유일한 포털이라고 생각합니까? – Joel