layout: docs-default
Federated 登出
IdentityServer支持和第三方身份的联合。当用户登出上游的第三方认证,取决于具体使用的协议,identityServer可能会收到一个登出通知,通过这个,IdentityServer可以通知它管理的客户端同样退出。
WS-Federation和OIDC通常使用的方法是把一个<iframe>
渲染在用户的浏览器里面做为HTTP的前端通道来通知IdentityServer用户会话已经结束(和IdentityServer supports的方式差不多).
要实现联合登出,必须提供一个登出endpoint(需要在上游的第三方认证系统上登记),当它被调用的时候,它可以通知IdentityServer的客户端,用户已经登出。这个通过调用来自 IdentityServer OWIN environment extensions的ProcessFederatedSignoutAsync
实现。这个会撤销用户的会话cookies,并渲染要给合适的<iframe>
来通知客户端。注意:这个需要登出endpoint运行在IdentityServer同样的管道里。
例子代码如下:
public void Configuration(this IAppBuilder app)
{
app.Map("/core", coreApp =>
{
var factory = new IdentityServerServiceFactory();
// ...
coreApp.UseIdentityServer(idsrvOptions);
coreApp.Map("/signoutcleanup", cleanup =>
{
cleanup.Run(async ctx =>
{
await ctx.Environment.ProcessFederatedSignoutAsync();
});
});
});
}
网友评论