相关疑难解决方法(0)

ASP.NET核心中基于令牌的认证

我正在使用ASP.NET Core应用程序.我正在尝试实现基于令牌的身份验证,但无法弄清楚如何在我的情况下使用新的安全系统.我经历了一些例子,但他们对我没什么帮助,他们使用的是cookie身份验证或外部身份验证(GitHub,Microsoft,Twitter).

我的场景是什么:angularjs应用程序应该请求/tokenurl传递用户名和密码.WebApi应授权用户并返回access_tokenangularjs app在以下请求中使用的内容.

我找到了很好的文章,关于在当前版本的ASP.NET中实现我所需要的 - 使用ASP.NET Web API 2,Owin和Identity进行基于令牌的身份验证.但对我来说,如何在ASP.NET Core中做同样的事情并不明显.

我的问题是:如何配置ASP.NET Core WebApi应用程序以使用基于令牌的身份验证?

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

158
推荐指数
2
解决办法
7万
查看次数

配置授权服务器端点

我们如何使用用户名和密码流在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万
查看次数

OAuth2 WebApi令牌过期

我试图动态设置令牌到期时间,但它似乎只是默认为20分钟.

这是我的ConfigureAuth:

public void ConfigureAuth(IAppBuilder app)
{

        OAuthOptions = new OAuthAuthorizationServerOptions
        {
            TokenEndpointPath = new PathString("/Token"),
            Provider = new ApplicationOAuthProvider(""),
            // In production mode set AllowInsecureHttp = false
            AllowInsecureHttp = true
        };

        // Enable the application to use bearer tokens to authenticate users
        app.UseOAuthBearerTokens(OAuthOptions);

}
Run Code Online (Sandbox Code Playgroud)

这是我的GrantResourceOwnerCredentials方法:

    public override Task GrantResourceOwnerCredentials(OAuthGrantResourceOwnerCredentialsContext context)
    {

        context.OwinContext.Response.Headers.Add("Access-Control-Allow-Origin", new[] { "*" });

        var hasValidLogin = (new login().authenticate(context.UserName, context.Password, "") == "valid");

        if (hasValidLogin == false)
        {
            context.SetError("invalid_grant", "The user name or password is incorrect.");
            return …
Run Code Online (Sandbox Code Playgroud)

asp.net oauth oauth-2.0 asp.net-web-api owin

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

ASP.NET 5 OAuth承载令牌认证

我正在尝试在ASP.NET 5中实现OAuth承载令牌身份验证,并且很难找到如何执行此操作的示例,因为ASP.NET 5中的OWIN内容已经发生了变化.

例如IApplicationBuilder.UseOAuthAuthorizationServer()IApplicationBuilder.UseOAuthBearerAuthentication()要不再存在,要么我错过了引用?

任何指针都将非常感激.

asp.net oauth owin asp.net-core

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

ASP.NET 5 OAuthBearerAuthentication:未接受以下身份验证方案:承载

更新:

Pinpoint帮助我从发射台上取下这个原型 - 我非常接近,除了:

  • 我需要按照这些说明升级到beta6 SDK .Global.json现在显示如下:
{
  "projects": [ "src", "test" ],
  "sdk": {
    "version": "1.0.0-beta6"
  }
}
Run Code Online (Sandbox Code Playgroud)
  • 我更新了project.json中的引用:
{
  "webroot": "wwwroot",
  "version": "1.0.0-*",

  "dependencies": {
    "Microsoft.AspNet.Mvc": "6.0.0-beta6",
    "Microsoft.AspNet.Server.IIS": "1.0.0-beta6",
    "Microsoft.AspNet.Server.WebListener": "1.0.0-beta6",
    "Microsoft.AspNet.StaticFiles": "1.0.0-beta6",
    "System.IdentityModel.Tokens": "5.0.0-beta6-207211625",
    "Serilog.Framework.Logging": "1.0.0-beta-43",
    "Microsoft.AspNet.Authentication.OAuthBearer": "1.0.0-beta6"
  },

  "commands": {
    "web": "Microsoft.AspNet.Hosting --config hosting.ini"
  },

  "frameworks": {
    "dnx451": { }
  },

  "exclude": [
    "wwwroot",
    "node_modules",
    "bower_components"
  ],
  "publishExclude": [
    "node_modules",
    "bower_components",
    "**.xproj",
    "**.user",
    "**.vspscc"
  ]
}
Run Code Online (Sandbox Code Playgroud)
  • 启动的Configure方法中的中间件顺序很重要.UseOAuthBearerAuthentication需要在UseMvc之前.Startup.cs中的Configure方法现在显示如下:
public void Configure(IApplicationBuilder app, IHostingEnvironment env)
{ …
Run Code Online (Sandbox Code Playgroud)

jwt asp.net-core-mvc

10
推荐指数
1
解决办法
2985
查看次数

如何在 ASP.NET Core Web API 中实现 OAuth2.0 身份验证令牌?

我想在 ASP.NET Core Web API 中实现 OAuth2.0 令牌。我看过很多教程和视频,但都是以传统方式进行,或者仅在 ASP.NET 中进行,而不是在 Core 中进行。所以我想要在 Visual Studio 2022 中使用最新版本的 ASP.NET Core 实现的方法。请帮忙

asp.net-core-webapi

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

ASP.Net MVC6是否支持OAuth 2承载令牌?

我正在使用ASP.Net MVC6开发一个应用程序,我想使用bearer令牌实现OAuth 2 auth.关于这是否可行,我找不到任何可靠的信息.有人能指出我正确的方向吗?

asp.net oauth-2.0 asp.net-core-mvc

3
推荐指数
1
解决办法
5584
查看次数

模糊参考问题(Microsoft.AspNet.Identity和Microsoft.AspNet.Identity.Core)

我正在使用最新的VS2015社区和ASP.NET 5等构建一个AngularJS单页面应用程序...

我在尝试实现身份验证时遇到的问题是我需要使用这两个命名空间:

Microsoft.AspNet.Identity //Version 3.0.0-beta4
Microsoft.AspNet.Identity.Owin //Version 2.2.1
Run Code Online (Sandbox Code Playgroud)

但由于Microsoft.AspNet.Identity.Owin具有依赖性

Microsoft.AspNet.Identity.Core 
Run Code Online (Sandbox Code Playgroud)

我不断得到模糊的引用问题,例如对于Microsoft.AspNet.Identity和Microsoft.AspNet.Identity.Core中存在的UserManager.

有没有人以前处理过这个?它是版本不兼容问题还是仅仅是不完整的Owin ASP.NET 5实现?

asp.net asp.net-identity asp.net-core

3
推荐指数
1
解决办法
1973
查看次数

使用OWIN从asp.net核心发布的oAuth承载

我有带OWIN管道的ASP.NET 4.5服务,该管道发出OAuth access_token以换取用户名/密码。此服务从ng-app中调用,一旦获得令牌,就将其存储在浏览器的本地存储中。然后,它调用消耗此令牌的资源api,API也用asp.net 4.5编写并使用owin。这是与OWIN一起发行的OAuth令牌,已加密/签名到了MachineKey机密中-到目前为止效果很好,并且很高兴被资源API消耗。OAuthAuthorizationServerMiddleware使所有这些成为可能。

现在,我需要使用从同一个ng-app发送到asp.net core 2.1服务的这些令牌,没有什么花哨的地方,只需对其进行验证/解码并获得令牌内部的声明。
这个OAuthAuthorizationServerMiddleware从未移植到asp.net核心,所以我被困住了。( ASP.NET Core中的OAuth授权服务 它没有帮助谈论完整的oidc服务器,我只需要使用它们而不需要更改发行代码即可)在对service.AddAuthentication()进行附加的configureServices()中:Tried.AddJwtBearer-但这没有任何意义-这些不是Jwt令牌真的是Tried.AddOAuth,但这对我来说都不有意义,因为我没有处理带有重定向的完整OAuth流程以获得令牌,我也没有处理ClientId / ClientSecret / etc,我只收到“ ng app的HTTP标头中的Bearer token-here”,因此我需要在管道中进行某些操作以对其进行解码并设置ClaimsIdentity,但是此“管道中的内容”还需要访问与机器相同的类似机器的数据在asp.net 4.5中的OWIN服务有什么想法吗?

c# owin asp.net-core

2
推荐指数
2
解决办法
1016
查看次数