layout: docs-default
Federated 登出
IdentityServer支持和第三方身份的聯(lián)合飒泻。當(dāng)用戶登出上游的第三方認(rèn)證恃疯,取決于具體使用的協(xié)議,identityServer可能會(huì)收到一個(gè)登出通知牙躺,通過(guò)這個(gè)恋腕,IdentityServer可以通知它管理的客戶端同樣退出。
WS-Federation和OIDC通常使用的方法是把一個(gè)<iframe>
渲染在用戶的瀏覽器里面做為HTTP的前端通道來(lái)通知IdentityServer用戶會(huì)話已經(jīng)結(jié)束(和IdentityServer supports的方式差不多).
要實(shí)現(xiàn)聯(lián)合登出焰手,必須提供一個(gè)登出endpoint(需要在上游的第三方認(rèn)證系統(tǒng)上登記),當(dāng)它被調(diào)用的時(shí)候糟描,它可以通知IdentityServer的客戶端,用戶已經(jīng)登出书妻。這個(gè)通過(guò)調(diào)用來(lái)自 IdentityServer OWIN environment extensions的ProcessFederatedSignoutAsync
實(shí)現(xiàn)船响。這個(gè)會(huì)撤銷(xiāo)用戶的會(huì)話cookies,并渲染要給合適的<iframe>
來(lái)通知客戶端躲履。注意:這個(gè)需要登出endpoint運(yùn)行在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();
});
});
});
}