我有一个使用 Tymon\JWTAuth 对用户进行身份验证的 Larvel API。
它工作正常。
出于某些原因,我还有一条不受保护的路线web.php:
Route::get('myroute', 'MyController@mymethod');
Run Code Online (Sandbox Code Playgroud)
MyController@mymethod 的代码如下:
$user = JWTAuth::toUser($request->input('token'));
// I tried also this:
// JWTAuth::setToken($request->input('token'));
// $user = JWTAuth::authenticate();
Run Code Online (Sandbox Code Playgroud)
我在浏览器中使用这个 url 调用路由: /myroute?token=eyJ0eXAiOiJKV1QiLCJhbGci....
问题是我在 JWT.php 中有一个异常:
Tymon \ JWTAuth \ Exceptions \ JWTException 需要一个令牌
JWT.php
protected function requireToken()
{
if (! $this->token) {
throw new JWTException('A token is required');
}
}
Run Code Online (Sandbox Code Playgroud)
如何解码作为 URL 参数传递而不是在请求标头中的令牌?
我最近一直在学习ASP.NET Core 2.2,并尝试使用JWT令牌开发基于角色的登录示例(网站+ Web API)。
定义很简单:
但是,我在“带有ASP.NET Core 2.2的JWT令牌”上找到的大多数解决方案和文章仅适用于Web API。
从下面的文章中,我几乎了解了JWT令牌的工作原理以及如何在Web API上实现它:
现在我的问题是如何使用ASP.NET Core网站使用上述API?
对于许多人来说,这可能是一个简单的问题,但是我对Web开发还很陌生,并且不了解很多事情。
任何帮助,将不胜感激。提前致谢。
我正在使用 Identity Server 4 .Net Core 3,如果我在启动时使用标准配置,我的 API 端点不会验证访问令牌,我不断收到 401 Unauthorized,但是当我使用授权属性在控制器中设置身份验证方案时,我可以使用相同的令牌成功访问我的端点...
[Route("api/[controller]")]
[Authorize(AuthenticationSchemes = JwtBearerDefaults.AuthenticationScheme)]
[ApiController]
public class MyWebAPiControllerController : ControllerBase
{
.......
Run Code Online (Sandbox Code Playgroud)
这是我的身份服务器配置:
//API resource
public IEnumerable<ApiResource> Apis()
{
var resources = new List<ApiResource>();
resources.Add(new ApiResource("identity", "My API", new[] { JwtClaimTypes.Subject, JwtClaimTypes.Email, JwtClaimTypes.Role, JwtClaimTypes.Profile }));
return resources;
}
Run Code Online (Sandbox Code Playgroud)
我的客户端配置:
public IEnumerable<Client> Clients()
{
var Clients = new List<Client>();
Clients.Add(new Client
{
ClientId = "client",
ClientSecrets = { new Secret(_securityConfig.Secret.Sha256()) },
AllowedGrantTypes = GrantTypes.ClientCredentials,
// scopes that client has access …Run Code Online (Sandbox Code Playgroud) 我正在查看用于用户登录的已实现 Cognito,并希望更好地了解验证 JWT 的过程。
有问题的应用程序在 asp.net 4.5 MVC 上,与 .NET Core 无关。我可以在网上找到的有关 AWS Cognito 的唯一信息与 .NET 核心有关。
我理解此处记录的每种令牌类型的含义:https : //docs.aws.amazon.com/cognito/latest/developerguide/amazon-cognito-user-pools-using-tokens-with-identity-providers.html# amazon-cognito-user-pools-using-the-id-token
我也了解验证 JWT 所需的步骤:https : //docs.aws.amazon.com/cognito/latest/developerguide/amazon-cognito-user-pools-using-tokens-verifying-a-jwt.html
我的问题是需要验证哪个 JWT 以及在什么阶段?
示例 1.
用户登录,一旦登录,他们将返回访问、ID 和刷新令牌。
此时需要验证所有令牌还是仅需要验证访问令牌?
刷新令牌是否仅在尝试使用之前进行验证(以获得新的访问和 ID 令牌)?
或者是否应该根据任何授权的内容请求验证所有令牌?
哪些令牌应该存储在 FormsAuthentication Cookie 中以备后用?我们[Authorize]在 asp.net中使用标准模式。
我在我的项目中使用 SignalR .net 核心客户端和 JWT 令牌。
在下面的示例代码中,字符串变量“tokenString”已经被配置为一个实际的令牌,因此我不需要调用外部方法来创建令牌,这部分在我到达这个方法之前已经完成了。使用调试,并在 JWT 网站上测试“toeknString”值,我知道令牌正在工作,只是我不知道如何在 SignalR 连接方法中使用现成的令牌。
如何配置 SignalR 客户端连接以使用此 tokenString?
localConConnection = new HubConnectionBuilder()
.WithUrl("https://localhost:44372/LocalConnectorHub", options =>
{
options.AccessTokenProvider = () => Task.FromResult(tokenString); // Not working
// Need a solution like this: options.Token = tokenString
})
.WithAutomaticReconnect()
.Build();
Run Code Online (Sandbox Code Playgroud) 你好mt问题是我需要验证来自android的JWT令牌并解码它以获取有效载荷中的信息但我似乎无法在JWT-Auth 0.5*中找到解码方法,是否有另一种解码有效载荷的方法得到数据?
我有两条路线如下:
Route::GET('admins/', 'UserController@index')->middleware('jwt.auth');
Route::GET('visitors', 'UserController@indexVisitors')->middleware('jwt.auth');
Run Code Online (Sandbox Code Playgroud)
我在auth.php 中有警卫:
'guards' => [
'web' => [
'driver' => 'session',
'provider' => 'users',
],
'api' => [
'driver' => 'jwt-auth',
'provider' => 'users',
],
'visitor_api' => [
'driver' => 'jwt-auth',
'provider' => 'visitors',
],
],
Run Code Online (Sandbox Code Playgroud)
我试图在中间件中指定守卫,但它不起作用。
Route::GET('visitors', 'UserController@indexVisitors')
->middleware('jwt.auth.visitors_api');
Run Code Online (Sandbox Code Playgroud) 我正在使用rest_framework_simplejwt对我的用户进行身份验证,但是在某些视图中我需要忽略它,因为这些是公共视图。我想将令牌检查到视图流中。预期的行为是:
在公众视野中
实际上rest_framework_simplejwt检查令牌并401在令牌无效或过期时引发......
我尝试authentication_classes在 APIView 中像这样禁用:
class SpecificProductApi(APIView):
def get_authenticators(self):
if self.request.method == 'GET':
self.authentication_classes = []
return super(SpecificProductApi, self).get_authenticators()
Run Code Online (Sandbox Code Playgroud)
但是如果我在输入GET APIView方法之前禁用它,我不能这样做,if reques.user.is_authenticated:因为我禁用了令牌:(
是否存在启用进入 api http 方法并手动检查用户查看的方法?谢谢
django python-3.x django-rest-framework jwt-auth django-rest-framework-simplejwt
我正在使用带有 JWT 的 spring-boot。
应用程序属性
jwt.secret=xyz
Run Code Online (Sandbox Code Playgroud)
控制器.java
@PostMapping(path = "/authenticate")
public ResponseEntity<?> createAuthenticationToken(@RequestBody JwtRequest authenticationRequest) throws Exception {
authenticate(authenticationRequest.getUsername(), authenticationRequest.getPassword());
final UserDetails userDetails = userDetailsService.loadUserByUsername(authenticationRequest.getUsername());
final String token = jwtTokenUtil.generateToken(userDetails);
return ResponseEntity.ok(new JwtResponse(token));
}
Run Code Online (Sandbox Code Playgroud)
JwtTokenUtil.java
@Value("${jwt.secret}")
private String secret;
public String generateToken(UserDetails userDetails) {
Map<String, Object> claims = new HashMap<>();
return doGenerateToken(claims, userDetails.getUsername());
}
private String doGenerateToken(Map<String, Object> claims, String subject) {
return Jwts.builder().setClaims(claims).setSubject(subject).setIssuedAt(new Date(System.currentTimeMillis()))
.setExpiration(new Date(System.currentTimeMillis() + JWT_TOKEN_VALIDITY*1000)).signWith(SignatureAlgorithm.HS512, secret).compact();
}
Run Code Online (Sandbox Code Playgroud)
在jwtTokenUtil.generateToken代码中我收到以下错误
ERROR o.a.c.c.C.[.[.[.[dispatcherServlet] - Servlet.service() for servlet …Run Code Online (Sandbox Code Playgroud) 我想在istio服务网格中使用OpenId 连接提供程序(如 keycloak 或 auth0..etc)提供的JWT对最终用户进行身份验证。但我可能无法成功集成它,因为我是 JWT auth 和 istio 的新手。
有人可以提供正确的信息和来源来完成身份验证吗?这将非常有帮助。
jwt-auth ×10
jwt ×5
laravel ×3
asp.net-core ×2
laravel-5 ×2
php ×2
asp.net-mvc ×1
c# ×1
django ×1
django-rest-framework-simplejwt ×1
istio ×1
java ×1
keycloak ×1
python-3.x ×1
spring-boot ×1