I'm trying to use Microsoft account to login with ng2.
Now, I had get OpenId success!
So, I must verify OpenId. I'm using crypto to verify it, there are some problem!
-
My verifySignature method
validateSignature(source, signature, publicKey): boolean { let verifier = createVerify('RSA-SHA256'); verifier.update(source); console.log(signature); console.log(publicKey); console.log(source); let re = verifier.verify(publicKey, signature, base64); console.log(re); return re; }
-
Wrong messages.The chrome brower show:
ERROR TypeError: Cannot read property '2' of null at module.exports (fixProc.js:13) at parseKeys (index.js:18) at verify (verify.js:10) at Verify.verifyMethod [as verify] (browser.js:87)
-
My problems.
I have look nodejs crypto document,and I have some problem. Visit https://nodejs.org/api/crypto.html#crypto_class_verify
look document below:const crypto = require('crypto'); const verify = crypto.createVerify('RSA-SHA256'); verify.update('some data to sign'); const publicKey = getPublicKeySomehow(); const signature = getSignatureToVerify(); console.log(verify.verify(publicKey, signature));
I want to know whether my
publicKey
,signature
,dataToSign
is correct!-
my publicKey
I get publickey from Microsoft OpenId Configratin:jwks_uri,it's looks like:{ "kty": "RSA", "use": "sig", "kid": "1LTMzakihiRla_8z2BEJVXeWMqo", "x5t": "1LTMzakihiRla_8z2BEJVXeWMqo", "n": "......", "e": "AQAB", "x5c": [ "......" ], "issuer": "https://login.microsoftonline.com/9188040d-6c67-4c5b-b112-36a304b66dad/v2.0" },
so,my publickey is get value from key=>n
. -
signature
I get id_token as jwt. It has three part. jwtHeader, jwtBody and signature. so my signature looks like:
CtYpl5CbGSP7iC4F6d2C_JDqFQUNoHRChaUzK45yEnI11-5DPM9SdM-c_4m-L_ViTLw2xBsD6z5Jw7apU2NjNhucCzgRHEQ55dyt8iLqofUxS_i0I5arryCeSPCSxalWGpj3Hgq9h7fDOtSonXBV2jGoMvMvDTOJd3ap2DmTt8u6Wt7zUuOHQ9slP0ifNz_OYjwMAtBEUJzKmXIhwG8_FO3jkcPgTcO1y_x9sxDJFwDAZ4rO9KeNodcqYp4EC0Dq2O1peeJk5Y7XUOA8nA4D2WT_v_xUVbSkA4qYmFZQbWKIVZB_BmfNNytnGlhN4WoI6jvwJI1KoBl84Ggz2EZUKw
-
dataToSign
I don't know which is dataToSign. But I had try it as : origin id_token value, jwtBody(json string), jwtBody(origin). and I get error above!
-
via NilTor
No comments:
Post a Comment