Single sign on Microsoft Edge上的SSO不起作用,但在IE11、Chrome、Safari和Firefox上起作用-通过Office.js加载项
my Office.js addin应用程序中的以下oAuth2 SSO代码在IE11、Chrome、Safari和Firefox中运行良好,但在Microsoft Edge中不起作用。我可以看到承载令牌通过url返回到弹出对话框: 我还可以看到asyncResult.status==成功,即 [对象对象]:{状态:“成功”,值:对象} 状态:“成功” 值:对象 addEventHandler:function(){var d=OSF.DDA.SyncMethodCalls[OSF.DDA.SyncMethodNames.AddMessageHandler.id],c=d.verifyAndExtractCall(参数,a,b),e=c[Microsoft.Office.WebExtension.Parameters.EventType],f=c[Microsoft.Office.WebExtension.Parameters.Handler];返回b.addEventHandler和FireQueuedEvent(e,f)} 参数:null 呼叫方:空 长度:0 名称:“价值” 原型:对象 proto:function(){[本机代码]} 关闭:函数(){var c=OSF.\u OfficeAppFactory.getHostFacade()[OSF.DDA.DispIdHost.Methods.CloseDialog];c(参数,g,b,a)} sendMessage:function(){var c=OSF.\u OfficeAppFactory.getHostFacade()[OSF.DDA.DispIdHost.Methods.sendMessage];返回c(参数,b,a)} 原型:对象 原型:对象 但是,当Microsoft Edge运行侧边栏/加载项时,不会调用“console.log('hello');” 弹出对话框在F12调试控制台中显示: HTTP403:禁止-服务器理解请求,但拒绝满足请求。 (XHR)职位- 有什么想法吗Single sign on Microsoft Edge上的SSO不起作用,但在IE11、Chrome、Safari和Firefox上起作用-通过Office.js加载项,single-sign-on,office-js,microsoft-edge,Single Sign On,Office Js,Microsoft Edge,my Office.js addin应用程序中的以下oAuth2 SSO代码在IE11、Chrome、Safari和Firefox中运行良好,但在Microsoft Edge中不起作用。我可以看到承载令牌通过url返回到弹出对话框: 我还可以看到asyncResult.status==成功,即 [对象对象]:{状态:“成功”,值:对象} 状态:“成功” 值:对象 addEventHandler:function(){var d=OSF.DDA.SyncMethodCalls[OSF.DDA.S
export function loginUsingOAuth() {
try {
const sealUrl = getFromStorage('seal_url', STORAGE_TYPE.LOCAL_STORAGE);
const redirectUrl = `${window.location.protocol}//${window.location.host}/login`;
let displayInIframe = false;
let promptBeforeOpen = false;
if (typeof sealUrl !== 'undefined' && sealUrl) {
const oAuthUrl = `${sealUrl}/seal-ws/oauth2/login?redirect_uri=${redirectUrl}`;
Office.context.ui.displayDialogAsync(
oAuthUrl,
{
height: 80,
width: 80,
displayInIframe,
promptBeforeOpen
},
asyncResult => {
console.log('asyncResult');
console.log(asyncResult);
addLog(LOG_TYPE.INFO, 'authentication.loginUsingOAuth', asyncResult);
if (asyncResult.status !== 'failed') {
const dialog = asyncResult.value;
dialog.addEventHandler(Office.EventType.DialogMessageReceived, args => {
console.log('hello');
在Edge中执行时,这可能实际上是一个路由问题?“/login”回调被路由到AuthCallback.js组件:
const Routes = () => (
<BrowserRouter>
<Switch>
<Route exact path="/login" component={AuthCallback} />
<Route path="/" component={BaseLayout} />
</Switch>
</BrowserRouter>
);
我开始怀疑Edge是否在干扰重定向。在下图中,您可以看到IE和Edge为同一登录操作返回不同的状态代码:
边缘浏览器似乎有两个问题
我看不到任何其他选项对我们开放,因为O/S版本号和MSWord版本决定了使用哪个浏览器来呈现侧边栏。如果Edge没有这些功能缺陷,则无法选择使用IE11还是Edge是可以接受的。Edge浏览器似乎有两个问题
我看不到任何其他选项对我们开放,因为O/S版本号和MSWord版本决定了使用哪个浏览器来呈现侧边栏。如果Edge没有这些功能缺陷,那么无法选择使用IE11还是Edge是可以忍受的。不要发布文本截图。只要复制粘贴文本,并适当缩进,如果它粘贴没有适当的缩进。此外,您的代码看起来没有完成,但最重要的是:在控制台日志设置为不过滤任何内容的情况下,您在Edge中看到了哪些错误或警告?据我所知,您的对话框正在调用
messageParent
,而这在Edge上失败。您能否澄清是什么事件触发了您看到的403?HTTP 403禁止客户端错误状态响应代码表示服务器理解该请求,但拒绝对其进行授权。此状态类似于401,但在本例中,重新身份验证不会产生任何影响。访问被永久禁止,并与应用程序逻辑相关联,例如对资源的权限不足。尝试降低internet选项中的安全设置,然后再次尝试检查问题。让我们知道您正在使用哪个版本的Edge进行此测试?Ref:代码正在调用后端服务器,该服务器反过来执行SSO登录。弹出对话框将打开,其中包含启动该过程的身份验证url。在本例中,此验证url包含回调url。后端服务器执行身份验证,并将此指定的回调url与访问令牌一起作为参数调用,例如,为了进一步简化用例,可将问题总结如下:当Microsoft Edge执行代码时,不会触发以下事件:
constructor(props) {
super(props);
const paramsObj = queryString.parse(props.location.search);
const paramsStr = JSON.stringify(paramsObj);
setTimeout(() => {
Office.context.ui.messageParent(paramsStr);
}, 1200);
}