Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/extjs/3.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
Identityserver4 刷新令牌标识服务器4_Identityserver4 - Fatal编程技术网

Identityserver4 刷新令牌标识服务器4

Identityserver4 刷新令牌标识服务器4,identityserver4,Identityserver4,我们使用Identity Server4来保护我们的API。我们希望使用刷新令牌来获得对API的长期访问权限。根据文档(“”),我们已将AllowOfflineAccess设置为true,但仍然不起作用。AccessTokenLifeTime过期(3600秒)后,令牌不工作。以下是客户: return new List<Client> { new Client { ClientId = "client",

我们使用Identity Server4来保护我们的API。我们希望使用刷新令牌来获得对API的长期访问权限。根据文档(“”),我们已将AllowOfflineAccess设置为true,但仍然不起作用。AccessTokenLifeTime过期(3600秒)后,令牌不工作。以下是客户:

 return new List<Client>
         {
         new Client
        {
        ClientId = "client",

        // no interactive user, use the clientid/secret for authentication
            AllowedGrantTypes = GrantTypes.ClientCredentials,

        // secret for authentication
            ClientSecrets =
            {
            new Secret("secret".Sha256())
            },

        // scopes that client has access to
            AllowedScopes = { "api1" },
            AccessTokenLifetime=3600,
            AllowOfflineAccess=true
    }
返回新列表
{
新客户
{
ClientId=“客户端”,
//无交互用户,请使用clientid/secret进行身份验证
AllowedGrantTypes=GrantTypes.ClientCredentials,
//身份验证的秘密
客户秘密=
{
新密码(“Secret.Sha256())
},
//客户端有权访问的作用域
AllowedScopes={“api1”},
AccessTokenLifetime=3600,
AllowOfflineAccess=true
}

客户端应用程序必须请求刷新令牌

请注意,并非每个流都可以使用:

混合、授权代码和 资源所有者密码流。要请求刷新令牌,客户端 需要在令牌请求中包括脱机访问范围(以及 必须获得授权才能申请该范围)

将此行添加到客户端代码:

.AddOpenIdConnect("oidc", "Open Id connect", options =>
{
    options.Scope.Add("offline_access");
}
刷新令牌的工作方式:

  • 登录以获取访问令牌。使用“offline_access”作用域时,会包含刷新令牌
  • 使用访问令牌直到其过期
  • 通过向端点发送刷新令牌来获取新的访问令牌
  • 根据您的策略,您还可以“刷新”刷新令牌本身(用新令牌替换持久化的刷新令牌)。或者在令牌过期之前不要返回刷新令牌,让用户再次登录

客户端应用程序必须请求刷新令牌

请注意,并非每个流都可以使用:

混合、授权代码和 资源所有者密码流。要请求刷新令牌,客户端 需要在令牌请求中包括脱机访问范围(以及 必须获得授权才能申请该范围)

将此行添加到客户端代码:

.AddOpenIdConnect("oidc", "Open Id connect", options =>
{
    options.Scope.Add("offline_access");
}
刷新令牌的工作方式:

  • 登录以获取访问令牌。使用“offline_access”作用域时,会包含刷新令牌
  • 使用访问令牌直到其过期
  • 通过向端点发送刷新令牌来获取新的访问令牌
  • 根据您的策略,您还可以“刷新”刷新令牌本身(用新令牌替换持久化的刷新令牌)。或者在令牌过期之前不要返回刷新令牌,让用户再次登录

谢谢Ruard,我可以使用hybrid而不是客户端凭据吗?实际上,我们希望使用刷新令牌来保护我们的API。是的,您可以使用hybrid。下面是一个很好的示例:确保刷新令牌与保护资源无关。使用它的唯一方法是将刷新令牌发送到Ids4端点以进行身份验证诱使请求获取新的访问令牌。它是访问令牌(包含在对API的请求中)这提供了对资源的访问。还有一件事需要您的反馈,我想使用AWS Lambda和.NET Core。这意味着我们不想公开IS4,我们将在AWS Lambda中创建端点,该端点将与IS4交互?这有意义吗?谢谢Ruard,我可以使用混合,而不是客户端凭据吗?实际上我们想要使用刷新令牌来保护我们的API。是的,您可以使用hybrid。下面是一个很好的示例:只是为了确保:刷新令牌与保护资源无关。使用它的唯一方法是将刷新令牌发送到Ids4端点,以便对获取新访问令牌的请求进行身份验证。它是访问令牌(包括在对API的请求中)提供对资源的访问。还有一件事需要您的反馈,我正在考虑将AWS Lambda与.NET Core一起使用。这意味着我们不想公开IS4,我们将在AWS Lambda中创建端点,该端点将与IS4交互?这有意义吗?