我是尝试使用AD FS的新手,我一直在圈子里跑。
好吧所以以下是我获得我的测试应用程序来验证身份验证的唯一方法,但它似乎'错了 - 它有效,但是我用错误的方式揉搓我......就像一件羊毛T恤
<section name="system.identityModel" type="System.IdentityModel.Configuration.SystemIdentityModelSection, System.IdentityModel, Version=4.0.0.0, Culture=neutral, PublicKeyToken=B77A5C561934E089" />
<section name="system.identityModel.services" type="System.IdentityModel.Services.Configuration.SystemIdentityModelServicesSection, System.IdentityModel.Services, Version=4.0.0.0, Culture=neutral, PublicKeyToken=B77A5C561934E089" />
<appSettings>
<add key="webpages:Version" value="3.0.0.0" />
<add key="webpages:Enabled" value="false" />
<add key="ClientValidationEnabled" value="true" />
<add key="UnobtrusiveJavaScriptEnabled" value="true" />
<add key="ida:FederationMetadataLocation" value="https://fedtest.xxxxxxxx.com/FederationMetadata/2007-06/FederationMetadata.xml" />
<add key="ida:Realm" value="https://myappNameHere.xxxxxx.com" />
<add key="ida:AudienceUri" value="http://myappNameHere.xxxxxxx.com" />
<add key="loginUrl" value="~/Home" />
</appSettings>
然后添加
<location path="Home">
<system.web>
<authorization>
<allow users="*" />
</authorization>
</system.web>
</location>
<location path="Logout.html">
<system.web>
<authorization>
<allow users="*" />
</authorization>
</system.web>
</location>
然后添加
<system.web>
<compilation debug="true" targetFramework="4.5" />
<httpRuntime targetFramework="4.5" />
<authorization>
<deny users="?" />
</authorization>
<authentication mode="None" />
</system.web>
然后添加
<identityConfiguration>
<audienceUris>
<add value="http://myappName.xxxxxx.com/" />
</audienceUris>
`<issuerNameRegistry type="System.IdentityModel.Tokens.ValidatingIssuerNameRegistry, System.IdentityModel.Tokens.ValidatingIssuerNameRegistry">
<authority name="http://fedtest.xxxxxxx.com/adfs/services/trust">
<keys>
<add thumbprint="12345567890asdasfsdgdfhdfgjdf123124" />
</keys>
<validIssuers>
<add name="http://fedtest.xxxxxxxx.com/adfs/services/trust" />
</validIssuers>
</authority>
</issuerNameRegistry>
<securityTokenHandlers>
<add type="System.IdentityModel.Services.Tokens.MachineKeySessionSecurityTokenHandler, System.IdentityModel.Services, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" />
<remove type="System.IdentityModel.Tokens.SessionSecurityTokenHandler, System.IdentityModel, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" />
</securityTokenHandlers>
<certificateValidation certificateValidationMode="None" />
</identityConfiguration>
`
为什么我认为这一切都是错的?好吧,我从以下步骤获得了所有这些web.config行...
但是使用这些步骤产生的应用程序将创建一个我从未遇到过麻烦的重定向循环。
所以 - 关于我做错了什么的建议。以标准方式生成web.config并将其粘贴到以前的版本中以使其工作是不正确的。
答案 0 :(得分:1)
参考:Use the On-Premises Organizational Authentication Option (ADFS) With ASP.NET in Visual Studio 2013。
就重定向循环而言。通常的原因是,对于ADFS RP,您配置了没有尾部斜杠的端点。
添加缺失的&#34; /&#34;并确保它与web.config中的字符串匹配。
答案 1 :(得分:0)
在您的应用中启用SSL,并将SSL URL设置为网络媒体资源中的默认值。
答案 2 :(得分:0)
好的 - 答案到底是什么......
1)我开始沿着这条路线走,因为我不断得到一个我认为是由web.config引起的重定向循环。
这不是web.config。
2)因此,在VS 13中创建应用程序 - 即转到c# - &gt;网络 - &gt;然后单击ASP.NET Web应用程序并设置内部部署身份验证
3)我的重定向循环是由来自AD FS
捆绑在一起的多个LDAP声明引起的4)一次发送一条规则并且像魔术一样工作。
如果有人能说清楚为什么这应该是真的我很好奇。