从IdentityServer安静地注销?

时间:2018-09-12 20:18:57

标签: c# xamarin.forms oauth-2.0 identityserver4

我正在使用IdentityServer 4实例中的OAuth2。基于this example,我可以登录并调用服务器托管的API。

我如何从OidcClient注销,而不显示Webview提示用户确认注销?

目前,我正在使用以下代码注销,但是该库仍显示带有注销提示的Web视图。理想情况下,我只想处理注销而不显示任何其他弹出窗口:

await _client.LogoutAsync(
    new LogoutRequest {
        BrowserDisplayMode = DisplayMode.Hidden,
    });

1 个答案:

答案 0 :(得分:3)

LogoutRequest为此包含一个IdTokenHint属性。如果要禁用注销提示,则需要将其设置为当前用户的id_token。参见here的OIDC规范:

  

id_token_hint

     

推荐。先前发出的ID令牌传递给注销端点,作为有关最终用户当前与客户端的已认证会话的提示。这用作指示RP正在请求OP注销的最终用户的身份。当OP用作id_token_hint值时,无需将其列为ID令牌的受众。

通过向id_token提供此请求,授权机构可以确保注销请求本身是真实的,因此认为不需要提示用户。

如果您没有id_token,则在首次授权用户时需要请求它,然后保留它以备后用。