相关疑难解决方法(0)

ASP.NET Core 1.0 Web API中的简单JWT身份验证

我正在寻找最简单的方法来设置一个Web API服务器,该服务器使用JWT进行ASP.NET Core(即ASP.NET 5)中的身份验证.这个项目(博客文章/github)正是我正在寻找的,但它使用的是ASP.NET 4.

我只希望能够:

  1. 设置一个登录路由,可以创建一个JWT令牌并将其返回到标题中.我正在将它与现有的RESTful服务集成,它将告诉我用户名和密码是否有效.在ASP.NET 4项目中,我看到这可以通过以下路由完成https://github.com/stewartm83/Jwt-WebApi/blob/master/src/JwtWebApi/Controllers/AccountController.cs#L24- L54

  2. 拦截对需要授权的路由的传入请求,解密并验证标头中的JWT令牌,并使JWT令牌的有效负载中的用户信息可供路由访问.例如:https://github.com/stewartm83/Jwt-WebApi/blob/master/src/JwtWebApi/App_Start/AuthHandler.cs

我在ASP.NET Core中看到的所有示例都非常复杂,并且依赖于我想避免的部分或全部OAuth,IS,OpenIddict和EF.

任何人都可以指出我如何在ASP.NET Core中执行此操作或帮助我开始这个?

编辑:回答 我最终使用这个答案:https://stackoverflow.com/a/33217340/373655

c# asp.net authentication asp.net-web-api asp.net-core

58
推荐指数
3
解决办法
5万
查看次数

配置授权服务器端点

我们如何使用用户名和密码流在ASP.NET 5中使用持票令牌?对于我们的场景,我们希望让用户使用AJAX调用进行注册和登录,而无需使用外部登录.

为此,我们需要一个授权服务器端点.在以前的ASP.NET版本中,我们将执行以下操作,然后在ourdomain.com/TokenURL上登录.

// Configure the application for OAuth based flow
PublicClientId = "self";
OAuthOptions = new OAuthAuthorizationServerOptions
{
    TokenEndpointPath = new PathString("/Token"),
    Provider = new ApplicationOAuthProvider(PublicClientId),
    AccessTokenExpireTimeSpan = TimeSpan.FromDays(14)
};
Run Code Online (Sandbox Code Playgroud)

但是,在当前版本的ASP.NET中,上述操作无效.我们一直试图找出新的方法.例如,GitHub上的aspnet/identity示例配置了Facebook,Google和Twitter身份验证,但似乎没有配置非外部OAuth授权服务器端点,除非这样AddDefaultTokenProviders()做,在这种情况下我们想知道到底是什么URL提供者会.

研究

我们从阅读源代码中了解到,我们可以通过调用IAppBuilder.UseOAuthBearerAuthentication我们的Startup类来向HTTP管道添加"承载认证中间件" .虽然我们仍然不确定如何设置其令牌端点,但这是一个良好的开端.这不起作用:

public void Configure(IApplicationBuilder app)
{  
    app.UseOAuthBearerAuthentication(options =>
    {
        options.MetadataAddress = "meta";
    });

    // if this isn't here, we just get a 404
    app.Run(async context =>
    {
        await context.Response.WriteAsync("Hello …
Run Code Online (Sandbox Code Playgroud)

c# asp.net oauth asp.net-identity asp.net-core

39
推荐指数
2
解决办法
3万
查看次数

ASP.NET 5中的Web API身份验证

我已经研究过ASP.NET 5一段时间了,还有一些我很困惑的事情.要在Web API 2中实现身份验证,我以前基本上使用的是OWIN OAuth身份验证服务器中间件.它使用起来很简单,我可以配置我需要的东西,而且我不需要在应用程序上放置一堆东西而不需要它.

现在,起初我没有在ASP.NET 5中找到它,我认为等待中间件出现是一个时间问题.但昨天,在阅读有关安全回购的问题时,我发现显然无意将此中间件移植到新版本的框架中.

相反,似乎鼓励人们使用Identity Server 3.我看了一下项目,虽然它很好并且有很多用法我真的更喜欢配置我有时需要的最小值.此外,另一个缺点是Identity Server 3需要完整的CLR,所以如果我需要使用它来为我的应用程序提供身份验证,我需要停止使用Core CLR,这对我来说是一个巨大的劣势,因为Core CLR是一个更轻巧.

因此,如果我不想在ASP.NET 5上使用Identity Server 3,如果OAuth Authentication Server中间件消失,如何为Web API实现身份验证?有没有人通过这个并找到了解决它的方法?

如何在不使用Identity Server 3的情况下处理ASP.NET 5 Web API上的身份验证?

c# asp.net authentication asp.net-web-api asp.net-core

22
推荐指数
1
解决办法
1万
查看次数