Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/xml/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
';离线访问';使用openid从B2C Azure Active Directory获取刷新令牌的作用域中的值无效_Openid_Adal_Angular5_Azure Ad B2c - Fatal编程技术网

';离线访问';使用openid从B2C Azure Active Directory获取刷新令牌的作用域中的值无效

';离线访问';使用openid从B2C Azure Active Directory获取刷新令牌的作用域中的值无效,openid,adal,angular5,azure-ad-b2c,Openid,Adal,Angular5,Azure Ad B2c,我正在尝试使用Azure B2C Active Directory实现身份验证。一切正常,我可以登录并从B2C active directory获取具有特定策略的访问令牌。但当我试图在登录url内的作用域中传递值“offline_access”以获取刷新toke时,它会返回一条错误消息,我无法登录。 我正在使用Angular 5的ADAL(Azure目录身份验证库)对Azure AD进行身份验证 完整错误消息: “openid+脱机访问”+在+请求+中提供+不受+支持。%0D%0A相关+ID

我正在尝试使用Azure B2C Active Directory实现身份验证。一切正常,我可以登录并从B2C active directory获取具有特定策略的访问令牌。但当我试图在登录url内的作用域中传递值“offline_access”以获取刷新toke时,它会返回一条错误消息,我无法登录。 我正在使用Angular 5的ADAL(Azure目录身份验证库)对Azure AD进行身份验证

完整错误消息:

“openid+脱机访问”+在+请求+中提供+不受+支持。%0D%0A相关+ID%253a+05f9f8b0-a8a0-4fdc-9cca-50a4e81a929c%0D%0ATimestamp%253a+2018-01-17+04%253a35%253a36Z%0D%0A&状态=a878cc7f-6d87-47e6-9965-d253a06ea6

我是不是遗漏了什么?或者有另一种方法来获取刷新令牌?

首先,您应该在Azure AD B2C中使用——或者称为MSAL——而不是使用——或者称为ADAL

其次,对于单页应用程序,Azure AD B2C不发布刷新令牌

相反,如中所述,单页应用程序必须使用隐藏的iframe刷新ID和访问令牌


此令牌刷新由MSAL处理。

您能否提供发送到AAD B2C服务的请求URL?您通常可以使用Fiddler或类似的工具来跟踪它。我已“拒绝在隐藏的iframe中显示“”,因为它将“X-Frame-Options”设置为“deny”。“错误您必须在隐藏请求中包含
prompt=none
参数。如果隐藏响应包含新令牌,则单页应用程序可以继续。如果隐藏响应包含一个
错误
属性,因为Azure AD B2C无法发布新令牌,那么您必须将可见帧重定向到Azure AD B2C以进行登录。我在隐藏请求中添加了prompt=none作为参数。即使将提示参数添加为“无”也会产生此错误。