我正在使用OWIN& OpenId使用Azure AD B2C为我的Web应用程序验证用户,Startup.Auth.cs的代码如下:
app.UseOpenIdConnectAuthentication(
new OpenIdConnectAuthenticationOptions
{
MetadataAddress = string.Format(AadInstance, Tenant, policy),
AuthenticationType = policy,
ClientId = clientId,
Authority = authority,
PostLogoutRedirectUri = postLogoutRedirectUri,
RedirectUri = postLogoutRedirectUri,
Notifications = new OpenIdConnectAuthenticationNotifica....
在注销时,它会导致重定向到postLogoutRedirectUrl,如此
post logout重定向URI存在于门户网站的重定向Uri中。
如果我停止浏览器并将地址栏中的帖子注销uri更改为https%3A%2F%2Fevil.com%2F,则即使此网址https://evil.com/不在允许的重定向中,重定向仍会正常进行URI。
为什么AD B2C没有停止重定向?这不容易受到漏洞吗?
答案 0 :(得分:3)
使用Azure AD B2C登录时,B2C服务会将一个令牌发送到" redirect_uri" (该应用程序)。由于令牌需要保持安全,因此B2C服务会要求您将URL发送到的位置列入白名单。
当您退出时,没有任何安全信息从B2C服务传输回应用程序。因此,即使用户被重定向到恶意站点,也不会丢失任何安全措施。
答案 1 :(得分:2)
您可以更改此行为,以强制Azure AD B2C仅在将有效ID令牌作为参数传入注销请求中时才处理重定向重定向。若要使B2C自动包含ID令牌并检查其是否存在,只需在Azure门户中编辑您的登录/注册策略,即:
或者,如果您使用自定义策略,则可以将SingleSignOn
元素添加到UserJourneyBehaviors
部分,并将EnforceIdTokenHintOnLogout
设置为true,即:
<UserJourneyBehaviors>
<SingleSignOn Scope="Tenant" EnforceIdTokenHintOnLogout="true" />
</UserJourneyBehaviors>