当您查看Vittorio关于id_tokens的文章
控制Web应用的会话时长-http://www.cloudidentity.com/blog/2016/07/25/controlling-a-web-apps-session-duration-2/
他提到使用隐藏的iFrame更新id_token。
<script>
setInterval( function ()
{ @if (Request.IsAuthenticated) {
<text>
var renewUrl = "/Account/ForcedSignIn";
var element = document.getElementById("renewSession");
console.log("sending request to: " + renewUrl);
element.src = renewUrl;
</text>
} else {
<text>
console.log("No renewal attempt without a valid session");
</text>
},
1000*60*45
);
</script>
这样的事情是否可以与B2C租户一起使用?在B2C中实施相同的解决方案时,它不起作用。当使用开发工具查看网络请求时,我可以看到它确实调用了我的端点来调用质询请求,然后我看到了进行授权的调用(这与最初登录时发生的情况类似),但是它从未返回那里。即使查看授权呼叫的响应似乎成功了吗?它永远不会返回到我的RedirectUri(因此,我永远也不会获得续订令牌)。
HTTP 302 GET http://localhost:54786/Authentication/ForcedSignIn
HTTP 200 https://login.microsoftonline.com/te/ / b2c_policy / oauth2 / v2.0 / authorize?client_id = client_id&redirect_uri = http%3A%2F%2Flocalhost%3A54786%2FAuthentication%2FForcedSignInRedirect&response_mode = form_post&authponse_type = id_token&scope = openid。
没有回复?请让我知道怎么了。
答案 0 :(得分:0)
Azure AD B2C允许使用隐藏框架来续订令牌,因此您可能必须使用“续订” URL进行一些检查:
1)它必须以您的租户名称和策略名称开头:
https://login.microsoftonline.com/te/{tenant}/{policy}/oauth2/v2.0/authorize?..
2)它必须包含prompt=none
查询字符串参数:
?..&prompt=none
通过将此prompt
参数设置为none
,允许隐藏框架更新令牌。