我想了解基于令牌的身份验证的含义.我搜索了互联网,但找不到任何可以理解的东西.
我正在ASP.Net Web API中开发REST API.我的API只能通过非基于浏览器的客户端访问.我需要为我的API实现安全性,所以我决定使用基于令牌的身份验证.我对基于令牌的身份验证有一个公平的理解,并阅读了一些教程,但他们都有一些用于登录的用户界面.我不需要任何用于登录的UI,因为登录详细信息将由客户端通过HTTP POST传递,HTTP POST将从我们的数据库授权.如何在API中实现基于令牌的身份验证?请注意 - 我的API将以高频率访问,因此我还必须注意性能.如果我能更好地解释,请告诉我.
.net c# authentication asp.net-web-api http-token-authentication
我一直用Java编写RESTful服务.这是我到目前为止所理解的(如果我错了,请纠正我):
令牌授权使用JSON Web令牌(JWT)完成,它包含三个部分:头,有效负载和秘密(在客户端和服务器之间共享).
我理解这个概念,并在阅读JWT时偶然发现了JSON Web Signature(JWS).
JWS也是类似于JWT的编码实体,具有头部,有效载荷和共享秘密.
问题:两个概念有什么区别,即JWT和JWS?如果它们在技术上相似,那么它们的实现有何不同?
这是我第一次使用基于令牌的身份验证,所以我可能完全误解了这个概念.
PS我在浏览本网站上的示例时了解了JWS .
java rest restful-authentication jwt http-token-authentication
I am referencing another SO post that discusses using refresh tokens with JWT.
JWT (JSON Web Token) automatic prolongation of expiration
I have an application with a very common architecture where my clients (web and mobile) talk to a REST API which then talks to a service layer and data layer.
I understand JWT token authentication, but I am a little confused at how I should use refresh tokens.
I want my JWT authentication to have the following properties:
JWT …
我已经根据django rest框架Docs实现了令牌认证.
从我读到的形式来看,DRF的令牌认证非常简单 - 每个用户一个令牌,令牌不会过期并且始终有效(我是对的吗?).
我知道有更好的做法,但是现在DRF令牌认证对我来说很好.
我的问题是 -使用普通DRF令牌身份验证注销的最佳做法是什么?
我的意思是,当用户注销时,我应该从客户端删除令牌吗?然后登录再次获取令牌?我应该删除令牌并生成一个新令牌吗?
有经验的人吗?
login token logout django-rest-framework http-token-authentication
我正在尝试将TokenAuthentication与我的一个视图一起使用.如https://www.django-rest-framework.org/api-guide/authentication/中所述,我将登录时收到的令牌添加为我发送的请求中称为"授权"的HTTP头.
问题是在我的单元测试中,身份验证失败了.查看TokenAuthentication类,我看到正在检查的标头是'HTTP_AUTHORIZATION'而不是'授权'
我正在使用的视图:
class DeviceCreate(generics.CreateAPIView):
model = Device
serializer_class = DeviceSerializer
authentication_classes = (TokenAuthentication,)
permission_classes = (IsAuthenticated,)
Run Code Online (Sandbox Code Playgroud)
将标题更改为"HTTP_AUTHORIZATION"似乎有效,但感觉不对.
我错过了什么吗?
django authorization django-rest-framework http-token-authentication
我正在尝试实施护照的passport-http-bearer策略,但它没有找到有信息的用户Bearer realm="Users".
我request是一个帖子请求:
{'token':'simple_access_token',}
Run Code Online (Sandbox Code Playgroud)
任何人都知道为什么会出现这种错误?我也知道这req应该是https或ssl代替http.我怎么做?
我使用的代码是:
bearerPassportToken: function(req,res){
passport.authenticate('bearer', function(err, user, info){
if ((err) || (!user)) {
if (err) return;
if (!user)
console.log("info);//Info: Bearer realm="Users"
res.redirect('/login');
return;
}
req.logIn(user, function(err){
if (err){
res.redirect('/login');
}
//Need to write code for redirection
;
});
})(req, res);
},
Run Code Online (Sandbox Code Playgroud) node.js express http-token-authentication sails.js passport.js
我正在尝试允许用户使用来自单独Web服务的帐户登录我的Flask应用程序.我可以联系此Web服务的api并获得安全令牌.如何使用此令牌对用户进行身份验证,以便他们可以访问受限制的视图?
我不需要将用户保存到我自己的数据库中.我只想为会话验证它们.我相信这可以使用Flask-Security和@auth_token_required装饰器完成,但文档不是很详细,我不知道如何实现它.
编辑:
这是一个代码示例:
@main.route("/login", methods=["GET", "POST"])
def login():
payload = {"User": "john", "Password": "password123"}
url = "http://webserviceexample/api/login"
headers = {'content-type': 'application/json'})
#login to web service
r = requests.post(url, headers=headers, json=payload)
response = r.json()
if (r.status_code is 200):
token = response['user']['authentication_token']
# allow user into protected view
return render_template("login.html", form=form)
@main.route('/protected')
@auth_token_required
def protected():
return render_template('protected.html')
Run Code Online (Sandbox Code Playgroud) python authentication flask flask-security http-token-authentication
我想从令牌端点响应修改响应主体.
我试图用MessageHandler 拦截/ Token请求,但它不起作用.
我可以通过覆盖OAuthAuthorizationServerProvider.TokenEndpoint方法为响应添加一些额外的信息,但是我无法创建自己的响应体.
有没有办法拦截/ Token请求?
我发现了如何从令牌端点响应中删除响应主体内容,如下所示: HttpContext.Current.Response.SuppressContent = true;
这似乎是实现我的目标的正确方法,但现在当我使用该context.AdditionalResponseParameters.Add()方法添加我的自定义信息时,SuppressContent阻止任何改动.
现在我有这样的事情:
// Removing the body from the token endpoint response
HttpContext.Current.Response.SuppressContent = true;
// Add custom informations
context.AdditionalResponseParameters.Add("a", "test");
Run Code Online (Sandbox Code Playgroud) asp.net oauth-2.0 asp.net-web-api owin http-token-authentication
我有两个申请
计划身份验证如下
现在,在关闭应用程序的服务器端,我需要确认每个请求的令牌都没有被篡改.
到目前为止,我已经编写了下面的代码来创建一个POC.
========================= OWIN配置========
[assembly: OwinStartup(typeof(WebApi.App_Start.Startup))]
namespace WebApi.App_Start
{
public class Startup
{
public void Configuration(IAppBuilder app)
{
HttpConfiguration config = new HttpConfiguration();
ConfigureOAuth(app);
WebApiConfig.Register(config);
app.UseCors(Microsoft.Owin.Cors.CorsOptions.AllowAll);
app.UseWebApi(config);
}
public void ConfigureOAuth(IAppBuilder app)
{
OAuthAuthorizationServerOptions OAuthServerOptions = new OAuthAuthorizationServerOptions()
{
AllowInsecureHttp = false,
TokenEndpointPath = new PathString("/token"),
AccessTokenExpireTimeSpan = TimeSpan.FromDays(1),
Provider = new SimpleAuthorizationServerProvider(),
};
// Token Generation
app.UseOAuthAuthorizationServer(OAuthServerOptions);
app.UseOAuthBearerAuthentication(new
OAuthBearerAuthenticationOptions());
}
}
} …Run Code Online (Sandbox Code Playgroud)