2016-08-17 23 views
1

我已使用Json Web令牌生成令牌。我用下面的参数,同时生成令牌JSON Web令牌,使其具体客户端

_tokenValidationParameters = new TokenValidationParameters 
     { 
      // The signing key must match! 
      ValidateIssuerSigningKey = true, 
      IssuerSigningKey = signingKey, 
      ValidateActor=true, 

      // Validate the JWT Issuer (iss) claim 
      ValidateIssuer = true, 
      ValidIssuer = "TokenIssuer", 

      // Validate the JWT Audience (aud) claim 
      ValidateAudience = true, 
      ValidAudience = "Audience", 

      // Validate the token expiry 
      ValidateLifetime = true, 

      ClockSkew = TimeSpan.Zero, 

     }; 

的问题是,令牌可以在任何其它计算机上使用,它会授权令牌有效。如果从不同的客户端计算机生成令牌,我需要使其无效。

+0

令牌是从客户端生成的? –

+0

没有它生成的服务器 – Ruchan

回答

0

这种行为是有道理的。该令牌由有效凭证生成,并可在任何计算机上使用,直至过期。

这是OAuth2用户的整点。令牌不是用户特定的,而是专用的。

如果您仍想将它与特定的计算机,那么你可以添加一些标识始发计算机,像IP地址,主机名,MAC地址,任何可以唯一地标识计算机。您可以将此信息添加到生成的令牌本身,并且在使用该令牌时,只需检查它是否与原始数据匹配。

我猜你想这样做,作为一种安全措施,但我仍然不认为这就是你应该如何使用该系统。令牌总是安全的,因为它们总是通过通过HTTPS加密的身份验证头传递。

你应该总是通过HTTPS验证服务器,以防止任何与请求和任何请求拦截的回火的通信。

+0

IP地址,主机名和MAC地址都可以相对容易地伪造/伪造。 – DavidG

1

简短的回答:第

龙答:

你所寻找的是设备认证,有能力识别设备,并确保只有设备通信。这是一个众所周知的问题 - 它需要在操作系统级别上控制设备,确保令牌不会被盗用(通过应用漏洞利用,设备漏洞利用或通信漏洞攻击)。这是不可能的。

这是“更不可能”在OAuth的,因为服务器生成的令牌,而不是客户端。这不是OAuth设计的目的。