0

我正在创建一个新的 MVC5 - ASP.NET Identity 项目,我想支持两种登录方法:表单和 eID(数字护照)。

我想使用 OWIN 轻松实现这些功能:

  • 表单登录:根据用户名和密码验证用户
  • Fed Auth:从 eID 读取数据,接收请求并找到与该 eID 耦合的用户 ( https://www.e-contract.be/eid-idp/authentication )。现在我已经能够通过 WIF 添加 FedAuth STS,但是每当我打开我的应用程序时,我都会自动重定向到 eID 站点(如果我禁用被动重定向,我会得到一个重定向循环)

我知道这将是一个广泛的主题,我知道这是一个非常笼统的问题。我尝试在谷歌上搜索一些教程,但我找不到任何资源来了解有关 OWIN 的更多信息或实施(我假设这是通过 oAuth)fedauth。

我应该如何实施呢?谢谢!

** 解决方案 **

这是我使用的 web.config:

<configSections>
..
   <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" />    
..
</configSections>

<appSettings>
   ..
   <add key="ida:FederationMetadataLocation" value="https://www.e-contract.be/eid-idp/endpoints/ws-federation/metadata/auth-ident-metadata.xml" />
   <add key="ida:Issuer" value="https://www.e-contract.be/eid-idp/protocol/ws-federation/auth-ident" />
   <add key="ida:ProviderSelection" value="productionSTS" />
   ..
</appSettings>

<location path="FederationMetadata">
  <system.web>
    <authorization>
      <allow users="*" />
    </authorization>
  </system.web>
</location>
<system.webServer>
   <validation validateIntegratedModeConfiguration="false" />
      <modules>
         <add name="WSFederationAuthenticationModule" type="System.IdentityModel.Services.WSFederationAuthenticationModule, System.IdentityModel.Services, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" preCondition="managedHandler" />
         <add name="SessionAuthenticationModule" type="System.IdentityModel.Services.SessionAuthenticationModule, System.IdentityModel.Services, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" preCondition="managedHandler" />
        ..
      </modules>
</system.webServer>

<system.identityModel>
    <identityConfiguration>
       <audienceUris>
           <add value="https://localhost:44301/" />
       </audienceUris>
       <issuerNameRegistry type="System.IdentityModel.Tokens.ConfigurationBasedIssuerNameRegistry, System.IdentityModel, Version=4.0.0.0, Culture=neutral, PublicKeyToken=B77A5C561934E089">
          <trustedIssuers>
              <add thumbprint="5981a2be47ca66203c9165edeb697d833df1b77d" name="www.e-contract.be" /><!-- Change this thumbprint if eID stops working https://www.e-contract.be/eid-idp/main.seam -->
          </trustedIssuers>
       </issuerNameRegistry>
       <claimsAuthenticationManager type="ePortaal.Federation.FederationUserAuthenticationManager, ePortaal" />
          <certificateValidation certificateValidationMode="None" />
              <securityTokenHandlers>
                   <remove type="System.IdentityModel.Tokens.SessionSecurityTokenHandler, System.IdentityModel, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" />
                   <add type="System.IdentityModel.Services.Tokens.MachineKeySessionSecurityTokenHandler, System.IdentityModel.Services, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" />
           </securityTokenHandlers>
      </identityConfiguration>
</system.identityModel>

 <system.identityModel.services>
   <federationConfiguration>
      <cookieHandler requireSsl="true" />
          <wsFederation requireHttps="true" passiveRedirectEnabled="false" realm="https://localhost:44301/" issuer="https://www.e-contract.be/eid-idp/protocol/ws-federation/auth-ident" />
   </federationConfiguration>
</system.identityModel.services>

电子合同每两个月更改一次指纹,您可以在网站上的“Identiteit thumbprint: 5981a2be47ca66203c9165edeb697d833df1b77d(将此密钥放入您的 web.config)”下找到它

4

1 回答 1

1

你想要什么并不完全清楚。如果您不想被自动重定向,则必须在 web.config 中使用 . 这样你的登录屏幕就会出现,你可以有一个登录按钮,明确重定向到 eid 站点。在同一页面上,您可以拥有一个使用表单身份验证的登录表单。

于 2013-10-25T12:48:22.780 回答