我们有一个请求,允许使用AD FS进行SSO。我已经浏览了所有SDK示例,并在一个独立站点中使用RP,指向我们域中的AD FS。我可以让声明显示在默认值上。aspx页面。
这是我接下来想做的…我希望WIF页面被托管在我们的网站,作为一个子应用程序,有该网站写表单认证票,然后重定向到我们的主要网站。我假设,因为我从我的主站继承了表单认证和机器密钥设置,我没有冲突。这是我的…
在全局的Application_PostAuthenticateRequest事件。asax在我的WIF网站…(称为WSFedAuthGate)可通过https://fqdn.com/WSFedAuthGate/Default.aspx访问
protected void Application_PostAuthenticateRequest(object sender, EventArgs e) {
System.Web.HttpApplication app = sender as System.Web.HttpApplication;
if (app.Request.IsAuthenticated && app.User != null && app.User.Identity != null) {
string name = app.User.Identity.Name;
FormsAuthentication.SetAuthCookie(name, false);
// hard code for now..
app.Response.Redirect("https://fqdn.com/home/asp_main.aspx");
}
}
表单的验证票是写的,我被重定向到主站点,但主站点不识别表单的验证票。即请求。isAuthenticated是false.
这是来自主站点的web配置部分。
<authentication mode="Forms">
<forms loginUrl="/home/asp_main.aspx" name=".myauth" protection="All" timeout="120" enableCrossAppRedirects="true"/>
</authentication>
,这里是来自WIF子应用程序的身份验证…
<authentication mode="None" />
<authorization>
<deny users="?" />
</authorization>
和之后的
<system.webServer>
<validation validateIntegratedModeConfiguration="false" />
<modules>
<remove name="RefreshController" />
<add name="WSFederationAuthenticationModule" type="Microsoft.IdentityModel.Web.WSFederationAuthenticationModule, Microsoft.IdentityModel, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" preCondition="managedHandler" />
<add name="SessionAuthenticationModule" type="Microsoft.IdentityModel.Web.SessionAuthenticationModule, Microsoft.IdentityModel, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" preCondition="managedHandler" />
</modules>
<defaultDocument>
<files>
<add value="Default.aspx" />
</files>
</defaultDocument>
</system.webServer>
有一些简单的东西我错过了这里,我只是知道它…但是我已经在网上搜了一天半了
事实证明,这很简单。在根应用的配置部分,validationKey和decryptionKey属性都应用了IsolateApps Modifier。aarrgg . .