【问题标题】:Issue: creating AD FS claims aware application in Visual Studio 2013问题:在 Visual Studio 2013 中创建 AD FS 声明感知应用程序
【发布时间】:2015-01-22 19:02:18
【问题描述】:

我是尝试使用 AD FS 的新手,我一直在兜圈子。

  1. 尝试制作声明感知应用程序
  2. 组织处理自己的身份验证

我已经让我的测试应用程序来验证身份验证,但它似乎错了。

  1. 在 Visual Studio 中创建新应用程序
  2. 选择 Web -> Visual Studio
  3. 选择 .Net Framework 4.5
  4. 选择 ASP.Net MVC 4 Web 应用程序
  5. 添加对 System.Identity 的引用
  6. 添加对 System.Identity.Services 的引用
  7. 编辑我的 web.Config 文件
  8. 在配置部分——添加以下内容
<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" />
  1. 然后添加
<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>
  1. 然后添加
     <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>
  1. 然后添加
    <system.web>
        <compilation debug="true" targetFramework="4.5" />
        <httpRuntime targetFramework="4.5" />
        <authorization>
          <deny users="?" />
        </authorization>
        <authentication mode="None" />
    </system.web>
  1. 然后添加
    <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>
    </system.identityModel>
    <system.identityModel.services>
        <federationConfiguration>
            <cookieHandler requireSsl="true" />
            <wsFederation passiveRedirectEnabled="true"
                          issuer="https://fedtest.xxxxxxxxx.com/adfs/ls/"
                          realm="https://myappName.xxxxxxxx.com/"
                          reply="https://myappName.xxxxxxxxx.com/" 
                          requireHttps="true" />
        </federationConfiguration>
    </system.identityModel.services>

为什么我认为这一切都是错误的?好吧,我通过以下步骤获得了所有这些 web.config 行...

  1. 返回步骤 5 并执行以下操作
  2. 在 Tempalte 下点击网页
  3. 选择唯一的选项 --- ASP.NET Web 应用程序
  4. 向导出现并单击“更改身份验证”
  5. 选择组织帐户
  6. 将下拉菜单更改为“本地”
  7. 填写“本地授权”
  8. 填写“应用 ID URI”
  9. 查看 web.config

但是使用这些步骤产生的应用程序会创建一个重定向循环,我一直无法解决这个问题。

所以——关于我做错了什么的建议。以标准方式生成 web.config 并将其粘贴到以前的版本中以使其正常工作是不正确的。

【问题讨论】:

    标签: asp.net-mvc visual-studio-2013 web-config adfs


    【解决方案1】:

    参考:Use the On-Premises Organizational Authentication Option (ADFS) With ASP.NET in Visual Studio 2013

    就重定向循环而言。通常的原因是,对于您的 ADFS RP,您配置了没有尾部斜杠的端点。

    添加缺少的“/”并确保它与您的 web.config 中的字符串匹配。

    【讨论】:

    • 要清楚,在哪里添加缺少的“/”?它可以通过使用拦截请求的请求验证器来添加......它在audienceUrisvalue中吗?
    • 从内存中,添加到标识符的末尾。
    • 我的问题是它没有连接到Claims Based Authentication Does not Contact STS Issuer ForgeRock 身份验证器......
    【解决方案2】:

    在您的应用程序中启用 SSL 并在您的网络属性中将 SSL URL 设置为默认值。

    【讨论】:

      【解决方案3】:

      好的——答案最终是什么......

      1) 我开始走这条路线是因为我不断收到重定向循环,我认为这是由 web.config 引起的。

      不是 web.config。

      2) 所以在 VS 13 中创建应用程序 - 即转到 c# -> web -> 然后单击 ASP.NET Web 应用程序并设置本地身份验证

      3) 我的重定向循环是由来自 AD FS 的多个 LDAP 声明捆绑在一起引起的

      4) 一次发送我的声明一条规则,并且像魔术一样工作。

      如果有人能解释为什么这是真的,我很好奇。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2013-12-19
        • 2021-12-08
        • 1970-01-01
        • 1970-01-01
        • 2014-07-17
        • 2013-11-23
        相关资源
        最近更新 更多