Windows Identity Foundation 포스트 백 페이지의 스타일을 지정할 수 있습니까? Windows Identity Foundation 포스트 백 페이지의 스타일을 지정할 수 있습니까?
이
은 성공적으로 로그인 한 후 빈을 통해 제공되는 페이지입니다 및 URL은이 문서화 된 기능의 경우 나도 몰라https://sts.address.com/?wa=wsignin1.0&wtrealm=https....
Windows Identity Foundation 포스트 백 페이지의 스타일을 지정할 수 있습니까? Windows Identity Foundation 포스트 백 페이지의 스타일을 지정할 수 있습니까?
이
은 성공적으로 로그인 한 후 빈을 통해 제공되는 페이지입니다 및 URL은이 문서화 된 기능의 경우 나도 몰라https://sts.address.com/?wa=wsignin1.0&wtrealm=https....
유사하지만, 나는 jumping-으로 다음을 제안합니다 오프 포인트 : ProcesssignInResponse
에
FederatedPassiveSecurityTokenServiceOperations.ProcessSignInResponse(responseMessage, HttpContext.Current.Response)
두 번째 매개 변수는 HttpResponse에 개체입니다 : 코드가 모두 같은 광산에서 아무것도 보이는
경우처럼 보이는 코드의 라인을 가지고있다. 당신이 myResponse
에
Dim myStringbuilder As New StringBuilder
Dim myStringWriter As New IO.StringWriter(myStringbuilder)
Dim myResponse As New Web.HttpResponse(myStringWriter)
전달하는 경우 : 그러나 나는 당신이 좋아하는 그래서 우리는 그것을 조작 할 수있는 출력을 캡처하기 위해 사용자 정의 HttpResponse
메시지를 전달하기 위해 시도하여, 질문에 대한 답을 찾기 위해, 실패, 시도 ProcessSignInResponse
, 다음 예외가 throw됩니다.
System.NullReferenceException : 개체 참조가 개체의 인스턴스로 설정되지 않았습니다. C에서 Logon_App.LCLoginBase.issueTokenAndRedirect에서 System.Web.HttpResponse.End() Microsoft.IdentityModel.Web.FederatedPassiveSecurityTokenServiceOperations.ProcessSignInResponse에서 (SignInResponseMessage signInResponseMessage, HttpResponse에 HttpResponse에) (logonParamsStruct & logonParams)에서 : \ 로그온 앱 \ 로그온 앱 \ 코드 \ LCLogin \ LCLoginBase.vb : 라인 XXX
은 내가 Microsoft.IdentityModel 어셈블리에 dotPeek를 사용하여를 알려준 다음 문서, http://www.paraesthesia.com/archive/2011/01/31.aspx을 읽어 보시기 바랍니다.
public static void ProcessSignInResponse(SignInResponseMessage signInResponseMessage, HttpResponse httpResponse)
{
if (signInResponseMessage == null)
throw DiagnosticUtil.ExceptionUtil.ThrowHelperArgumentNull("signInResponseMessage");
else if (httpResponse == null)
{
throw DiagnosticUtil.ExceptionUtil.ThrowHelperArgumentNull("httpResponse");
}
else
{
signInResponseMessage.Write(httpResponse.Output);
httpResponse.Flush();
httpResponse.End();
}
}
signInResponseMessage.Write 방법은 다음을 수행합니다 : 모든 ProcessSignInResponse
메시지가하는 저를 보여주는 다음 당신이 볼 수 있듯이
public override void Write(TextWriter writer)
{
if (writer == null)
{
throw DiagnosticUtil.ExceptionUtil.ThrowHelperArgumentNull("writer");
}
else
{
this.Validate();
writer.Write(this.WriteFormPost());
}
}
, 본질적으로 모든 것을 수행한다, WriteFormPost
의 내용을 응답 스트림에 씁니다.
그래서 "ProcessSignIn
"메서드를 변경하여 FederatedPassiveSecurityTokenServiceOperations.ProcessSignInResponse
을 호출하는 대신 출력 할 HTML을 반환합니다.
그래서,이 본질적으로 내 방법을 변경 :
public static void ProcessSignIn(SignInRequestMessage signInRequest, HttpResponse httpResponse)
{
FederatedPassiveSecurityTokenServiceOperations.ProcessSignInResponse(signInResponseMessage, httpResponse);
}
에 :
public static string ProcessSignIn(SignInRequestMessage signInRequest)
{
return signInResponseMessage.WriteFormPost();
}
물론, SignInResponseMessage는 "메인"내용을 반환하는 청소기 방법을 제공해야 양식 게시물에 작성하려는 내용 중 HTML 양식을 문자열로 사용하면 적어도 Response.Write(result)
으로 클라이언트에 반환하기 전에 결과를 수정하는 것이 더 쉽습니다.
+1 멋진 해킹. –
이것은 매우 유망한 아이디어처럼 보입니다. 먼저 WIF에 전달하기 전에 직접 직접 답장을 보내보십시오. –
실제로 작동한다는 것을 확인했지만, 응답에 쓰여지는 것이 html 노드에 삽입되는 html 노드 외부에 있기 때문에 잘못된 HTML이 생성되지만 브라우저는이를 처리 할 수 있어야합니다. –