第53章 结束会话端点(End Session Endpoint) - Identity Server 4 中文文档(v1.0.0)

结束会话端点可用于触发单点注销(请参阅规范)。

要使用结束会话端点,客户端应用程序会将用户的浏览器重定向到结束会话URL。用户在会话期间通过浏览器登录的所有应用程序都可以参与注销。

注意
终端会话端点的URL可通过发现端点(discovery endpoint)获得。

53.1 Parameters

id_token_hint
当用户被重定向到端点时,系统会提示他们是否真的想要注销。发送从身份验证收到的原始id_token的客户端可以绕过此提示。这是作为查询的字符串参数传递的id_token_hint

post_logout_redirect_uri
如果id_token_hint有效传递了,则客户端也可以发送post_logout_redirect_uri参数。这可用于允许用户在注销后重定向回客户端。该值必须与客户端预先配置的PostLogoutRedirectUris`*(客户端文档)之一匹配。

State
如果post_logout_redirect_uri有效,则客户端也可以发送state参数。在用户重定向回客户端后,这将作为查询字符串参数返回给客户端。这通常由客户端用于跨重定向的往返状态。

示例

GET /connect/endsession?id_token_hint=eyJhbGciOiJSUzI1NiIsImtpZCI6IjdlOGFkZmMzMjU1OTEyNzI0ZDY4NWZmYmIwOThjNDEyIiwidHlwIjoiSldUIn0.eyJuYmYiOjE0OTE3NjUzMjEsImV4cCI6MTQ5MTc2NTYyMSwiaXNzIjoiaHR0cDovL2xvY2FsaG9zdDo1MDAwIiwiYXVkIjoianNfb2lkYyIsIm5vbmNlIjoiYTQwNGFjN2NjYWEwNGFmNzkzNmJjYTkyNTJkYTRhODUiLCJpYXQiOjE0OTE3NjUzMjEsInNpZCI6IjI2YTYzNWVmOTQ2ZjRiZGU3ZWUzMzQ2ZjFmMWY1NTZjIiwic3ViIjoiODg0MjExMTMiLCJhdXRoX3RpbWUiOjE0OTE3NjUzMTksImlkcCI6ImxvY2FsIiwiYW1yIjpbInB3ZCJdfQ.STzOWoeVYMtZdRAeRT95cMYEmClixWkmGwVH2Yyiks9BETotbSZiSfgE5kRh72kghN78N3-RgCTUmM2edB3bZx4H5ut3wWsBnZtQ2JLfhTwJAjaLE9Ykt68ovNJySbm8hjZhHzPWKh55jzshivQvTX0GdtlbcDoEA1oNONxHkpDIcr3pRoGi6YveEAFsGOeSQwzT76aId-rAALhFPkyKnVc-uB8IHtGNSyRWLFhwVqAdS3fRNO7iIs5hYRxeFSU7a5ZuUqZ6RRi-bcDhI-djKO5uAwiyhfpbpYcaY_TxXWoCmq8N8uAw9zqFsQUwcXymfOAi2UF3eFZt02hBu-shKA&post_logout_redirect_uri=http%3A%2F%2Flocalhost%3A7017%2Findex.html

注意
您可以使用IdentityModel客户端库以编程方式创建end_session请求.NET代码。有关更多信息,请查看IdentityModel文档

github地址

转载于:https://www.cnblogs.com/thinksjay/p/10787334.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
设备授权端点(Device Authorization Endpoint)是 OAuth 2.0 设备授权流程中的一个端点,它用于在用户没有可用的 Web 浏览器或类似的用户代理的情况下,让设备完成 OAuth 2.0 授权流程。设备授权流程通常用于 IoT 设备、智能家居等场景。 IdentityModel 是一个 .NET Core 平台上的 OpenID Connect 和 OAuth 2.0 库,它提供了对设备授权端点的支持。 在 IdentityModel 中,可以使用 `DeviceAuthorizationRequest` 类来构造设备授权请求: ```csharp var client = new HttpClient(); var disco = await client.GetDiscoveryDocumentAsync("https://demo.identityserver.io"); var response = await client.RequestDeviceAuthorizationAsync(new DeviceAuthorizationRequest { Address = disco.DeviceAuthorizationEndpoint, ClientId = "client", Scope = "openid profile email api", DeviceCodeLifetime = 300 }); Console.WriteLine($"user code: {response.UserCode}"); Console.WriteLine($"device code: {response.DeviceCode}"); Console.WriteLine($"verification uri: {response.VerificationUri}"); Console.WriteLine($"expires in: {response.ExpiresIn}"); ``` 在上述代码中,我们首先使用 HttpClient 从 IdentityServer 的元数据中获取设备授权端点地址,然后构造一个设备授权请求,并发送给 IdentityServerIdentityServer 会返回一个包含设备授权信息的响应对象,我们可以从中获取用户码、设备码、验证 URI 等信息,然后将这些信息展示给用户。用户需要在另一个设备上打开验证 URI,并使用用户码来完成 OAuth 2.0 授权流程。完成授权后,我们就可以使用设备码来获取访问令牌了。 ```csharp var tokenResponse = await client.RequestTokenAsync(new TokenRequest { Address = disco.TokenEndpoint, ClientId = "client", DeviceCode = response.DeviceCode }); if (tokenResponse.IsError) { Console.WriteLine(tokenResponse.Error); return; } Console.WriteLine($"access token: {tokenResponse.AccessToken}"); Console.WriteLine($"refresh token: {tokenResponse.RefreshToken}"); ``` 在上述代码中,我们使用设备码向 IdentityServer 请求访问令牌。如果授权已经完成,IdentityServer 将会返回一个包含访问令牌的响应对象,我们可以从中获取访问令牌和刷新令牌。有了访问令牌,我们就可以访问资源服务器了。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值