从一个ASP.NET Web API在同一个ADFS 3.0上使用多个依赖信任方

时间:2016-03-01 18:45:16

标签: authentication asp.net-web-api oauth-2.0 owin adfs

环境:

  • ADFS 3.0(在SQL Server 2012上),没有设备注册服务
    • 我们在ADFS中定义了一个依赖信任方,TokenLifetime为1440分钟(1天)。
  • ASP.NET Web Api配置为使用OWIN
  • 的OAuth2
  • Windows应用商店应用(8.1 / 10)
  • 使用的Web Api

现状:

我们通过OAuth2获得了App,Web-api和ADFS之间的身份验证流程。在App_Start \ Startup.Auth中的启动类中的web-api中,我们有以下代码:

public void ConfigureAuth(IAppBuilder app)
{
app.UseActiveDirectoryFederationServicesBearerAuthentication(
    new ActiveDirectoryFederationServicesBearerAuthenticationOptions
    {
        MetadataEndpoint = ConfigurationManager.AppSettings["ida:AdfsMetadataEndpoint"],
        TokenValidationParameters = new TokenValidationParameters()
        {
            ValidAudience = ConfigurationManager.AppSettings["ida:Audience"]

        }
    });
}

web.config我们配置了appsettings

<add key="ida:AdfsMetadataEndpoint" value="https://adfs.service.com/federationmetadata/2007-06/federationmetadata.xml" />
<add key="ida:Audience" value="http://orderapi.service.com" />

通缉情况:

当应用程序使用某些重要的端点时,我们有需求,即不到7分钟前用户已经过身份验证/登录。对于其他不太重要的端点,这不是问题,每天一次就足够了

我们最初的教导是在ADFS中创建一个额外的依赖信任方,使用不同的令牌生命周期(7分钟)。同样在端点级别,我们在de Web-api中定义了两个不同的URL:

  • 长令牌生命周期 - &gt;可以与长令牌生命周期一起使用的每个端点都以https://webapi.service.com/api_long/开头....( - &gt; https://webapi.service.com/api_long/Order/Get)
  • 短令牌生命周期 - &gt;需要短令牌生命周期的每个端点都以https://webapi.service.com/api_short/开头......( - &gt; https://webapi.service.com/api_short/Order/Post)

问题/问题:

  • 是否可以通过一个Web-api在同一个ADFS上与2个依赖信任方合作?

    • 如果可能,您如何在创业级注册两个信赖方?
    • 您如何告诉控制人员必须使用哪个依赖信任方?
  • 如果无法通过一个Web-api与同一个ADFS上的2个依赖信任方合作,那么还有另一个可以帮助我们的解决方案吗?

    • 我自己的替代方案是制作2个Web-api,一个用于长期,一个用于短路。但不知何故,我找不到一个优雅的解决方案。

提前感谢您的帮助。

0 个答案:

没有答案