我正在使用ASP.NET Core应用程序.我正在尝试实现基于令牌的身份验证,但无法弄清楚如何在我的情况下使用新的安全系统.我经历了一些例子,但他们对我没什么帮助,他们使用的是cookie身份验证或外部身份验证(GitHub,Microsoft,Twitter).
我的场景是什么:angularjs应用程序应该请求/token
url传递用户名和密码.WebApi应授权用户并返回access_token
angularjs app在以下请求中使用的内容.
我找到了很好的文章,关于在当前版本的ASP.NET中实现我所需要的 - 使用ASP.NET Web API 2,Owin和Identity进行基于令牌的身份验证.但对我来说,如何在ASP.NET Core中做同样的事情并不明显.
我的问题是:如何配置ASP.NET Core WebApi应用程序以使用基于令牌的身份验证?
我们如何使用用户名和密码流在ASP.NET 5中使用持票令牌?对于我们的场景,我们希望让用户使用AJAX调用进行注册和登录,而无需使用外部登录.
为此,我们需要一个授权服务器端点.在以前的ASP.NET版本中,我们将执行以下操作,然后在ourdomain.com/Token
URL上登录.
// 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) 我已经研究过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上的身份验证?
我试图动态设置令牌到期时间,但它似乎只是默认为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 5中实现OAuth承载令牌身份验证,并且很难找到如何执行此操作的示例,因为ASP.NET 5中的OWIN内容已经发生了变化.
例如IApplicationBuilder.UseOAuthAuthorizationServer()和IApplicationBuilder.UseOAuthBearerAuthentication()要不再存在,要么我错过了引用?
任何指针都将非常感激.
Pinpoint帮助我从发射台上取下这个原型 - 我非常接近,除了:
{
"projects": [ "src", "test" ],
"sdk": {
"version": "1.0.0-beta6"
}
}
Run Code Online (Sandbox Code Playgroud)
{
"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)
public void Configure(IApplicationBuilder app, IHostingEnvironment env)
{ …
Run Code Online (Sandbox Code Playgroud) 我想在 ASP.NET Core Web API 中实现 OAuth2.0 令牌。我看过很多教程和视频,但都是以传统方式进行,或者仅在 ASP.NET 中进行,而不是在 Core 中进行。所以我想要在 Visual Studio 2022 中使用最新版本的 ASP.NET Core 实现的方法。请帮忙
我正在使用ASP.Net MVC6开发一个应用程序,我想使用bearer令牌实现OAuth 2 auth.关于这是否可行,我找不到任何可靠的信息.有人能指出我正确的方向吗?
我正在使用最新的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实现?
我有带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服务有什么想法吗?