Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/.net/22.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
.net 是否可以在OWIN中续订访问令牌_.net_Oauth_Owin - Fatal编程技术网

.net 是否可以在OWIN中续订访问令牌

.net 是否可以在OWIN中续订访问令牌,.net,oauth,owin,.net,Oauth,Owin,我正在寻找一种方法,使用OWIN在.NET API应用程序中新建访问令牌声明。我正在读这篇文章,我读到可以使用刷新令牌 这个问题的背景如下。我想在acces_令牌的声明中存储一些信息,这些信息可以通过用户的操作进行更新。例如,用户名存储在声明中。用户决定更新其用户名。是否可以更新索赔 但我在任何地方都找不到一个好的例子。在不破坏应用程序安全性的情况下,这是可能的吗?我认为这是不可能的。Oauth令牌一旦创建就不能修改,因为修改会导致签名无效(这是一件好事) 消费应用程序需要更新令牌(重新认证、使

我正在寻找一种方法,使用OWIN.NET API应用程序中新建访问令牌声明。我正在读这篇文章,我读到可以使用刷新令牌

这个问题的背景如下。我想在acces_令牌的声明中存储一些信息,这些信息可以通过用户的操作进行更新。例如,用户名存储在声明中。用户决定更新其用户名。是否可以更新索赔


但我在任何地方都找不到一个好的例子。在不破坏应用程序安全性的情况下,这是可能的吗?

我认为这是不可能的。Oauth令牌一旦创建就不能修改,因为修改会导致签名无效(这是一件好事)

消费应用程序需要更新令牌(重新认证、使用刷新令牌等),如果消费应用程序和API在您的控制下,这是可能实现的,否则这可能不是对API使用者施加的实际限制

另一种方法是避免在访问令牌中存储可更改的声明,而是在接收到请求时使用附加声明填充从访问令牌中获取的ClaimSideEntity对象(在IPrincipal中)。这将允许您更新API中的值,但也不要求您的消费者在每次声明需要更改时获得新的访问令牌。缺点是您需要在每个请求上加载声明。您还需要在访问令牌中有一个值,该值保证能够识别无法更改的用户

您可以使用OwinMiddleware类来实现这一点:

public override async Task Invoke(IOwinContext context)
{
    ClaimsIdentity identity = context.Authentication.User?.Identity as ClaimsIdentity;
    identity.AddClaims(new Claim("Name", "Value));
}

如果您指的是身份验证令牌,则可以生成owin令牌并以编程方式覆盖cookie。stackoverflow中有关于令牌生成的帖子。