标签: jwt-auth

Tymon\JWTAuth::toUser 错误:需要令牌

我有一个使用 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 参数传递而不是在请求标头中的令牌?

authentication jwt laravel laravel-5 jwt-auth

5
推荐指数
1
解决办法
7060
查看次数

ASP.NET Core 2.2 JWT身份验证

我最近一直在学习ASP.NET Core 2.2,并尝试使用JWT令牌开发基于角色的登录示例(网站+ Web API)。

定义很简单:

  • 如果用户的角色是“管理员”,则它将重定向到管理页面。
  • 如果用户的角色是“用户”,则它将重定向到用户页面。

但是,我在“带有ASP.NET Core 2.2的JWT令牌”上找到的大多数解决方案和文章仅适用于Web API。

从下面的文章中,我几乎了解了JWT令牌的工作原理以及如何在Web API上实现它:

http://jasonwatmore.com/post/2019/01/08/aspnet-core-22-role-based-authorization-tutorial-with-example-api

现在我的问题是如何使用ASP.NET Core网站使用上述API?

对于许多人来说,这可能是一个简单的问题,但是我对Web开发还很陌生,并且不了解很多事情。

任何帮助,将不胜感激。提前致谢。

c# asp.net-core-mvc asp.net-core jwt-auth

5
推荐指数
1
解决办法
2680
查看次数

Identity Server 4 的 API 授权不断返回 401 Unauthorized

我正在使用 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)

openid-connect asp.net-core identityserver4 jwt-auth

5
推荐指数
1
解决办法
3758
查看次数

应该存储哪些 JWT 令牌以备后用?

我正在查看用于用户登录的已实现 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中使用标准模式。

authentication asp.net-mvc jwt amazon-cognito jwt-auth

5
推荐指数
1
解决办法
425
查看次数

.Net Core 3.1 SignalR 客户端 - 如何将 JWT 令牌字符串添加到 SignalR 连接配置?

我在我的项目中使用 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)

jwt-auth asp.net-core-signalr asp.net-core-3.1

5
推荐指数
1
解决办法
5188
查看次数

如何在laravel中使用JWT-auth解码JWT

你好mt问题是我需要验证来自android的JWT令牌并解码它以获取有效载荷中的信息但我似乎无法在JWT-Auth 0.5*中找到解码方法,是否有另一种解码有效载荷的方法得到数据?

php jwt laravel jwt-auth

4
推荐指数
1
解决办法
8066
查看次数

如何在中间件中为路由指定防护?

我有两条路线如下:

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)

php laravel laravel-5 laravel-middleware jwt-auth

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

Django Rest Framework 避免身份验证 JWT

我正在使用rest_framework_simplejwt对我的用户进行身份验证,但是在某些视图中我需要忽略它,因为这些是公共视图。我想将令牌检查到视图流中。预期的行为是:

在公众视野中

  • 避免令牌验证:如果有过期或无效的令牌,请忽略它并让我在 APIView 中验证它

实际上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

4
推荐指数
3
解决办法
3298
查看次数

java.lang.IllegalArgumentException:密钥字节数组不能为空或为空

我正在使用带有 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)

java spring-security jwt spring-boot jwt-auth

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

如何将 OpenIdconnect 与 istio 集成?

我想在istio服务网格中使用OpenId 连接提供程序(如 keycloak 或 auth0..etc)提供的JWT对最终用户进行身份验证。但我可能无法成功集成它,因为我是 JWT auth 和 istio 的新手。

有人可以提供正确的信息和来源来完成身份验证吗?这将非常有帮助。

jwt openid-connect keycloak istio jwt-auth

4
推荐指数
1
解决办法
1067
查看次数