asp.net-mvc - 使用 ADFS 2.0 基于声明的 ASP .NET MVC 应用程序 - 重定向过多
问题描述
我正在尝试使用 .NET 4.5 创建一个 ASP .NET MVC Web 应用程序,该应用程序使用基于声明的身份验证和 ADFS 2.0。
当我运行应用程序时,我收到错误“重定向太多”。我怀疑这是由于应用程序的 Web.config 中的一些错误配置造成的,如下所示:
<system.identityModel>
<identityConfiguration>
<audienceUris>
<add value="https://application1.ourdomain.com/" />
</audienceUris>
<issuerNameRegistry type="System.IdentityModel.Tokens.ConfigurationBasedIssuerNameRegistry, System.IdentityModel, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<trustedIssuers>
<add thumbprint="RTEWQ67890ABCDEFGHIJKLMNOPQRSTUVWXYZZZZ"/>
</trustedIssuers>
</issuerNameRegistry>
<certificateValidation certificateValidationMode="None" />
</identityConfiguration>
</system.identityModel>
<system.identityModel.services>
<federationConfiguration>
<cookieHandler requireSsl="false" />
<wsFederation passiveRedirectEnabled="true" issuer="https://application1.ourdomain.com/trust/" realm="https://application1.ourdomain.com/" reply="https://application1.ourdomain.com/" requireHttps="false" />
</federationConfiguration>
</system.identityModel.services>
在 ADFS 2.0 上,声明配置如下:
SigningCertificateRevocationCheck : CheckChainExcludeRoot
WSFedEndpoint : https://application1.ourdomain.com/trust/
AdditionalWSFedEndpoint : {}
ClaimsProviderName : {}
IssuanceTransformRules : @RuleTemplate = "LdapClaimsRuleTemplate"
@RuleName = "application1 Claim Rule"
c:[Type ==
"http://schemas.microsoft.com/ws/2008/06/identity/claims/windowsaccountname",
Issuer == "AD AUTHORITY"]
=> issue(store = "Active Directory", types =
("http://schemas.xmlsoap.org/ws/2005/05/identity/claims/upn",
"http://schemas.xmlsoap.org/ws/2005/05/identity/claims/emailaddress",
"http://schemas.microsoft.com/ws/2008/06/identity/claims/role"), query =
";userPrincipalName,mail,tokenGroups;{0}", param = c.Value);
ClaimsAccepted : {}
ConflictWithPublishedPolicy : False
EncryptClaims : True
Enabled : True
EncryptionCertificate :
Identifier : {urn:stsout.ourdomain.com:application1}
LastMonitoredTime : 01/01/1900 01:00:00
LastPublishedPolicyCheckSuccessful :
LastUpdateTime : 01/01/1900 01:00:00
MetadataUrl :
MonitoringEnabled : False
Name : application1 Relying Party Trust
NotBeforeSkew : 0
EnableJWT : False
AlwaysRequireAuthentication : False
Notes :
OrganizationInfo :
ImpersonationAuthorizationRules :
AdditionalAuthenticationRules :
ProxyEndpointMappings : {}
ProxyTrustedEndpoints : {}
ProtocolProfile : WsFed-SAML
RequestSigningCertificate : {}
EncryptedNameIdRequired : False
SignedSamlRequestsRequired : False
SamlEndpoints : {}
SamlResponseSignature : AssertionOnly
SignatureAlgorithm : http://www.w3.org/2001/04/xmldsig-more#rsa-sha256
TokenLifetime : 0
AllowedClientTypes : Public
IssueOAuthRefreshTokensTo : NoDevice
AllowedAuthenticationClassReferences : {}
AutoUpdateEnabled : False
DelegationAuthorizationRules :
EncryptionCertificateRevocationCheck : CheckChainExcludeRoot
PublishedThroughProxy : True
IssuanceAuthorizationRules : @RuleTemplate = "AllowAllAuthzRule"
=> issue(Type = "http://schemas.microsoft.com/authorization/claims/permit",
Value = "true");
issuer、realm 和 reply 的 Web.config 条目应该是什么?ADFS 2.0 声明设置是否正确?
解决方案
颁发者是 ADFS URL,例如https://my-adfs/adfs/ls/。
更新
这是 ADFS URL。您必须向 ADFS 团队询问实际地址(您在“my-adfs”中替换的部分。
例如https://adfs234.cloudapp.net/adfs/ls/
如果 ADFS 团队可以提供,您也可以从元数据中获取它。
是的 - 它特定于该安装。
推荐阅读
- git - 如何仅在第一次运行剧本时运行命令,在下次重新运行时跳过?
- react-native - 如何在本机反应中将状态变量分配给样式组件?
- php - 设置计时器以在所有必填字段均有效时提交表单
- bash - Bash - 将光标移动到窗口中不可见的行
- swift - 点击 TabBar 时更新当前 UIViewController UI
- c# - 仅将特定节点从 Xml 反序列化为 Object
- jquery - 来自多个父母的 kendoComboBox 级联
- python - 在单独的文件中查找所有局部变量
- ringcentral - 如何搜索团队成员并从 Glip 团队中添加/删除?
- java - spring-context-indexer 生成的组件索引似乎什么都不做