在 .net 中解码 firebase 令牌
decode firebase token in .net
我正在从我的 Android 应用中的 signInWithGoogle 迁移到 Firebase。
我可以在我的 android 应用程序中生成 firebase 用户并提取用户信息,但我在使用 firebase 令牌对我的后端服务器进行身份验证时遇到问题。
我希望能够将令牌传递给服务器,对其进行解码并验证用户,而不是传递电子邮件地址或其他一些个人信息。
这是文档中首选的身份验证方法
// The user's ID, unique to the Firebase project. Do NOT use this value to
// authenticate with your backend server, if you have one. Use
//FirebaseUser.getToken() instead.
使用 signInWithGoogle,我只需要将令牌传递给服务器并点击 googleapis.com/oauth2/v3/tokeninfo?id_token=TOKEN
的端点
我可以通过这种方式验证和验证用户。
(https://developers.google.com/identity/sign-in/web/backend-auth)
firebase 好像没有提供这个功能。我只能找到 Java 和 NODEjs 的 SDK。 (https://firebase.google.com/docs/auth/server#use_a_jwt_library)
有没有办法在 .NET 中解码令牌?
我已经能够使用 Org.BouncyCastle (https://www.nuget.org/packages/BouncyCastle/) and Jose.JWT (https://www.nuget.org/packages/jose-jwt/) 库在 .NET 中解码令牌,使用这种方法:
string tokenToDecode=@"eyGF...._pEkKGg...NnO7w";
StreamReader sr = new StreamReader(GenerateStreamFromString("-----BEGIN PRIVATE KEY-----\nMIIE...\n...\n...\n...\n...\n...\n...\n...\n...\n...\n...\n...\n...\n...\n...\n...\n...\n...\n...\n...\n...\n...\n...\n...\n...\n...\n-----END PRIVATE KEY-----\n"));
var pr=new Org.BouncyCastle.OpenSsl.PemReader(sr);
RsaPrivateCrtKeyParameters RsaParams = (RsaPrivateCrtKeyParameters)pr.ReadObject();
string decodedToken=Jose.JWT.Decode(tokenToDecode, Org.BouncyCastle.Security.DotNetUtilities.ToRSA(RsaParams), JwsAlgorithm.RS256);
此 中的注释对此处也有帮助。
我正在从我的 Android 应用中的 signInWithGoogle 迁移到 Firebase。
我可以在我的 android 应用程序中生成 firebase 用户并提取用户信息,但我在使用 firebase 令牌对我的后端服务器进行身份验证时遇到问题。
我希望能够将令牌传递给服务器,对其进行解码并验证用户,而不是传递电子邮件地址或其他一些个人信息。 这是文档中首选的身份验证方法
// The user's ID, unique to the Firebase project. Do NOT use this value to
// authenticate with your backend server, if you have one. Use
//FirebaseUser.getToken() instead.
使用 signInWithGoogle,我只需要将令牌传递给服务器并点击 googleapis.com/oauth2/v3/tokeninfo?id_token=TOKEN
的端点
我可以通过这种方式验证和验证用户。
(https://developers.google.com/identity/sign-in/web/backend-auth)
firebase 好像没有提供这个功能。我只能找到 Java 和 NODEjs 的 SDK。 (https://firebase.google.com/docs/auth/server#use_a_jwt_library)
有没有办法在 .NET 中解码令牌?
我已经能够使用 Org.BouncyCastle (https://www.nuget.org/packages/BouncyCastle/) and Jose.JWT (https://www.nuget.org/packages/jose-jwt/) 库在 .NET 中解码令牌,使用这种方法:
string tokenToDecode=@"eyGF...._pEkKGg...NnO7w";
StreamReader sr = new StreamReader(GenerateStreamFromString("-----BEGIN PRIVATE KEY-----\nMIIE...\n...\n...\n...\n...\n...\n...\n...\n...\n...\n...\n...\n...\n...\n...\n...\n...\n...\n...\n...\n...\n...\n...\n...\n...\n...\n-----END PRIVATE KEY-----\n"));
var pr=new Org.BouncyCastle.OpenSsl.PemReader(sr);
RsaPrivateCrtKeyParameters RsaParams = (RsaPrivateCrtKeyParameters)pr.ReadObject();
string decodedToken=Jose.JWT.Decode(tokenToDecode, Org.BouncyCastle.Security.DotNetUtilities.ToRSA(RsaParams), JwsAlgorithm.RS256);
此