我使用库与Azure集成在我的角(9)应用程序中。signinRedirect() & signinSilent()函数正在按预期工作。但是对于signinPopup(),在浏览器url片段中成功地获得了访问令牌,但是它引发了下面提到的错误。
app.component.ts:83错误:在oidc-client.min.js:1的存储中没有找到匹配状态
令人惊讶的是,在signin-callback.html中,当我将response_type作为查询var userManager = new Oidc.UserManager({response_mode: "query"});传递时,登录弹出会成功地工作,但是登录重定向失败了。
错误:没有响应状态
我最初遵循了这个文章。
以下是我的服务代码:
import { Injectable } from '@angular/core';
import { UserManager, UserManagerSettings, User } from 'oidc-client';
import { environment } from 'src/environments/environment';
@Injectable({
providedIn: 'root'
})
export class AuthService {
private userManager: UserManager;
constructor() {
this.instantiate();
}
private instantiate() {
this.userManager = new UserManager(this.getOidcSettings());
}
public async signinRedirect(): Promise<any> {
return this.userManager.signinRedirect();
}
public async signinSilent(): Promise<User> {
return this.userManager.signinSilent();
}
public async signinPopup(): Promise<User> {
return this.userManager.signinPopup();
}
public async signoutRedirect(): Promise<any> {
this.userManager.signoutRedirect();
this.userManager.clearStaleState();
}OIDC设置:
const userManagerSettings: UserManagerSettings = {
client_id: 'my clientid',
authority: 'my authority',
redirect_uri: 'http://localhost:4200/assets/oidc/signin-callback.html',
silent_redirect_uri: 'http://localhost:4200/assets/oidc/silent-refresh-callback.html',
post_logout_redirect_uri: 'https://localhost:4200/',
response_type: 'token',
response_mode: 'fragment',
scope: 'my api scope',
loadUserInfo:false
};signin-callback.html
<!DOCTYPE html>
<html lang="en">
<head>
<script src="https://cdnjs.cloudflare.com/ajax/libs/oidc-client/1.10.1/oidc-client.min.js"></script>
<script>
var userManager = new Oidc.UserManager();
userManager.signinRedirectCallback().then(
(user) => {
alert('signin redirect successful.');
window.history.replaceState(
{},
window.document.title,
window.location.origin
);
window.location = '/';
},
(err) => {
alert('Error caught in signinRedirectCallback()');
console.log('Error caught in signinRedirectCallback().');
console.error(err);
}
);
userManager.signinPopupCallback().then(
(user) => {
alert('signin pop up successful.');
window.history.replaceState(
{},
window.document.title,
window.location.origin
);
window.location = '/';
},
(err) => {
alert('Error caught in signinPopupCallback()');
console.log('Error caught in signinPopupCallback().');
console.error(err);
}
);
</script>
</head>
<body></body>
</html>silent-refresh-callback.html
<!DOCTYPE html>
<html lang="en">
<head>
<script src="https://cdnjs.cloudflare.com/ajax/libs/oidc-client/1.10.1/oidc-client.min.js"></script>
<script>
var userManager = new Oidc.UserManager();
userManager.signinSilentCallback().catch((err) => {
console.log('Error caught in signinSilentCallback().');
console.error(err);
});
</script>
</head>
<body></body>
</html>发布于 2020-10-11 02:51:53
我们也遇到了一个类似的问题,这个错误间歇性地出现在一个子集的用户身上。到目前为止,我们已经了解到了发生这种情况的两个具体原因:
发布于 2021-09-21 16:30:16
这也发生在我身上,在我的例子中,我们用https配置了Identity Server站点,我正在尝试访问旧的书签URL,它被存储为http。
这引起了我同样的OIDC问题。在将URL还原回https之后,一切都对我有效。
https://stackoverflow.com/questions/61664891
复制相似问题