我终于找到了解决这个问题的方法。正如我在回答中所说,oidc 客户端在本地存储中维护状态信息,以便它可以验证它是否从预期的服务器获得了响应。您可以通过生成一个安全的随机字符串并将其保存在 localStorage 中来模仿这一点。在向您的身份验证服务器发送请求以注册新用户之前执行此操作。代码如下所示:
const nonce = this.generateUniqueString();
const state = this.generateUniqueString();
const date = new Date();
const query = `${otherQueryOptions}&state=${state}&nonce=${nonce}`;
const authSessionData = {
authority: auth_server_url,
client_id: client_id,
created: date.getTime(),
id: state,
nonce: nonce,
redirect_uri: `your/return.url`
}
// You must prefix the key with 'oidc'
localStorage.setItem(`oidc.${authSessionData.id}`, JSON.stringify(authSessionData));
const registrationPath = `myServerRegistrationPath?${query}`
navigateToPage(registrationPath);
这解决了我的问题。