【问题标题】:WebAPI app using OWIN and JWT使用 OWIN 和 JWT 的 WebAPI 应用程序
【发布时间】:2015-09-25 10:45:44
【问题描述】:

我有一个前端 ASP.NET MVC 5 网站,它使用 WS-Federation 协议通过 AD FS 3.0 对用户进行身份验证。用户通过 ACS 登录页面登录,一切正常。

我的后端是前端将调用的 WebAPI 应用程序。它们是单独的领域,但都应向同一 AD FS 服务器进行身份验证。不同之处在于我希望 WebAPI 项目使用 JWT 令牌进行身份验证。

这是 WebAPI 启动:

var thumbprint = "** omitted on purpose for internet eyes... **";
certificateStore = new X509Store(StoreName.TrustedPeople, StoreLocation.LocalMachine);
certificateStore.Open(OpenFlags.ReadOnly);
var certificate = certificateStore.Certificates.Find(X509FindType.FindByThumbprint, thumbprint, false)[0];
certificateStore.Close();

var accessTokenFormat = new JwtFormat
(
    // AllowedAudiences:
    new[] { "urn:MySolution.WebAPI" },
    //IssuerSecurityTokenProviders:
    new IIssuerSecurityTokenProvider[] 
    {
        new X509CertificateSecurityTokenProvider("https://myAdfsServer.com/adfs/oauth2/", certificate)
    }
);

app.UseOAuthAuthorizationServer(new OAuthAuthorizationServerOptions
{
    AccessTokenFormat = accessTokenFormat
});

app.UseOAuthBearerAuthentication(new OAuthBearerAuthenticationOptions
{
    AuthenticationMode = AuthenticationMode.Active,                     
    AccessTokenFormat = accessTokenFormat
});

我在这里缺少什么?我已经准备了很多关于这方面的文章,每一篇看起来都很接近,但只是缺少了一些东西。非常感谢任何帮助。

编辑 1: 根据我的阅读,JWT 不是一种身份验证机制。那么我应该如何在我的 WebAPI 中对用户进行身份验证呢?在我的场景中,用户已经使用 ACS 登录在前端进行了身份验证,但是后端由前端调用,所以 AD FS 的单点登录不会在这里发挥作用吗?

【问题讨论】:

    标签: asp.net asp.net-web-api owin adfs jwt


    【解决方案1】:

    OpenIdConnect 用于对用户进行身份验证。 JwtFormat 主要用于验证使用 OAuthFlows 接收到的 AccessToken。

    查看这些示例: https://github.com/AzureADSamples

    这可能特别有趣: https://github.com/AzureADSamples/WebAPI-ManuallyValidateJwt-DotNet

    【讨论】:

      猜你喜欢
      • 2017-06-09
      • 2014-10-27
      • 2016-06-17
      • 2016-09-12
      • 2018-06-29
      • 2015-12-27
      • 2017-09-06
      • 1970-01-01
      • 2019-04-27
      相关资源
      最近更新 更多