Мой вход в систему для начинающих пользователей выглядит следующим образом:
1. Пользователь нажимает кнопку входа на моей угловой странице, и он перенаправляет его на страницу входа auth0
2. Затем он регистрируется впервые
3.Мои правила проверяют, является ли он пользователем в первый раз, и если true, перенаправляет его на мою угловую страницу (/ конечная точка регистра), где я хочу добавить логику, чтобы добавить этого пользователя в мою пользовательскую БД.
4. Затем пользователь должен вернуться к потоку входа в систему auth0 и повторить все правила снова.
Проблема в том, что я получаю эту ошибку в моем URL:
http://localhost:4200/callback#error=access_denied&error_description=error:0906D06C:PEM%20routines:PEM_read_bio:no%20start%20line&state=1ab01wks-UUYE_Fq5mcEGnv-6ocMYo-z
регистрирует в режиме отладки в правилах auth0
{
"code": 500,
"error": "Script generated an unhandled asynchronous exception.",
"details": "Error: error:0906D06C:PEM routines:PEM_read_bio:no start line",
"name": "Error",
"message": "error:0906D06C:PEM routines:PEM_read_bio:no start line",
"stack": "Error: error:0906D06C:PEM routines:PEM_read_bio:no start line\n at Sign.sign (crypto.js:331:26)\n at Object.sign (/data/_verquire/auth0-extension-s3-tools/1.1.1/node_modules/jwa/index.js:76:45)\n at Object.jwsSign [as sign] (/data/_verquire/auth0-extension-s3-tools/1.1.1/node_modules/jws/lib/sign-stream.js:32:24)\n at Object.module.exports [as sign] (/data/_verquire/auth0-extension-hapi-tools/1.2.1/node_modules/jsonwebtoken/sign.js:144:16)\n at createToken (/data/io/aefe221a-b96c-403d-8dd2-b535234672e1/webtask.js:123:20)\n at async.waterfall.callback.user (/data/io/aefe221a-b96c-403d-8dd2-b535234672e1/webtask.js:125:19)\n at fn (/data/sandbox/node_modules/auth0-authz-rules-api/node_modules/async/lib/async.js:638:34)\n at Immediate._onImmediate (/data/sandbox/node_modules/auth0-authz-rules-api/node_modules/async/lib/async.js:554:34)\n at runCallback (timers.js:810:20)\n at tryOnImmediate (timers.js:768:5)\n at processImmediate [as _immediateCallback] (timers.js:745:5)"
}
3:03:02 PM:
Code generated an uncaught exception: Error: error:0906D06C:PEM routines:PEM_read_bio:no start line
at Sign.sign (crypto.js:331:26)
at Object.sign (/data/_verquire/auth0-extension-s3-tools/1.1.1/node_modules/jwa/index.js:76:45)
at Object.jwsSign [as sign] (/data/_verquire/auth0-extension-s3-tools/1.1.1/node_modules/jws/lib/sign-stream.js:32:24)
at Object.module.exports [as sign] (/data/_verquire/auth0-extension-hapi-tools/1.2.1/node_modules/jsonwebtoken/sign.js:144:16)
at createToken (/data/io/aefe221a-b96c-403d-8dd2-b535234672e1/webtask.js:123:20)
at async.waterfall.callback.user (/data/io/aefe221a-b96c-403d-8dd2-b535234672e1/webtask.js:125:19)
at fn (/data/sandbox/node_modules/auth0-authz-rules-api/node_modules/async/lib/async.js:638:34)
at Immediate._onImmediate (/data/sandbox/node_modules/auth0-authz-rules-api/node_modules/async/lib/async.js:554:34)
at runCallback (timers.js:810:20)
at tryOnImmediate (timers.js:768:5)
at processImmediate [as _immediateCallback] (timers.js:745:5)
Это мое правило:
function(user, context, callback) {
if (context.protocol !== "redirect-callback") {
if (context.stats.loginsCount === 1) {
function createToken(clientId, clientSecret, issuer, user) {
var options = {
expiresInMinutes: 5,
audience: clientId,
issuer: issuer,
algorithm: 'RS256'
};
return jwt.sign(user, clientSecret, options);
}
var token = createToken(
configuration.CLIENT_ID,
configuration.CLIENT_SECRET,
configuration.ISSUER, {
sub: user.user_id,
email: user.email,
scope: 'openid'
}
);
context.redirect = {
url: "http://localhost:4200/register?token=" + token
};
return callback(null, user, context);
}
return callback(null, user, context);
} else {
function verifyToken(clientId, clientSecret, issuer, token, cb) {
jwt.verify(
token,
clientSecret, {
audience: clientId,
issuer: issuer
},
cb
);
}
function postVerify(err, decoded) {
return callback(null, user, context);
}
verifyToken(
configuration.CLIENT_ID,
configuration.CLIENT_SECRET,
configuration.ISSUER,
context.request.query.token,
postVerify
);
}
}
И мой редирект компоненты .ts
export class RegisterComponent implements OnInit {
token: string;
profile: any;
constructor(private http: HttpClient,private activatedRoute: ActivatedRoute, private auth: AuthService) {
}
ngOnInit() {
this.activatedRoute.queryParams.subscribe(params => {
const token = params['token']
const state = params['state'];
console.log(token);
const headers = new HttpHeaders({
'Authorization': 'Bearer '+token
});
this.http.get('https://'+environment.domain+'/userinfo', {headers: headers}).subscribe((data: any) => {
this.profile = data;
console.log(this.profile);
});
}
);
}
}
Я думаю, что проблема в моем правиле, где я подписываю токен. Я не знаю, что именно должен быть закрытый ключ, и если я вообще делаю подписывающий токен.