我试图获取使用App Service身份验证注销然后重定向到特定URL的Azure功能应用程序。我使用Azure Active Directory B2C作为身份验证提供程序。我可以成功注销,但是即使我指定了post_logout_redirect_uri查询参数,它也总是转到默认的注销页面(.auth / logout / complete)。
我正在通过myapp.azurewebsites.net/.auth/logout端点注销。我像这样添加post_logout_redirect_uri参数:https://myapp.azurewebsites.net/.auth/logout?post_logout_redirect_uri=https%3A%2F%2Fmyapp.azurewebsites.net%2Flogout.html
但是,这总是将我重定向到我指定的URL的默认myapp.azurewebsites.net/.auth/logout/complete instaead。
查看.auth / logout调用的响应时,无论我指定了什么post_logout_redirect_uri,我都会看到它重定向到https://jteamweb.b2clogin.com/jteamweb.onmicrosoft.com/oauth2/v2.0/logout?p=b2c_1a_signup_signin_jteamweb&post_logout_redirect_uri=https%3A%2F%2Fmyapp.azurewebsites.net%2F.auth%2Flogout%2Fcomplete。
如果我直接在上面的URL中调用此URL,并将post_logout_redirect_uri更改为我自己的URL,则它可以成功运行。但是,我无法执行此操作,因为清除域上的AppServiceAuthSession cookie的唯一方法是调用.auth / logout。调用上述URL不会清除cookie,因为它是对其他域的调用。
关于如何使它起作用的任何想法?我想念什么吗?
编辑:我发现,如果我将URL放置在我的应用程序域中,例如http://myapp.mydomain.net/xyz,重定向将起作用。但是,如果我使用其他子域,例如http://logout.mydomain.net/,则它默认为Azure AD注销页面。不能重定向到另一个子域吗?我需要执行此操作的原因是,我的原始域完全需要身份验证,因此,如果我重定向到该域中的任何内容,它只会要求我再次进行身份验证。因此,我想重定向到不需要身份验证的域。