解码.net中的firebase令牌

时间:2016-06-09 21:17:24

标签: .net firebase firebase-authentication

我正在Android应用中从signInWithGoogle迁移到Firebase。

我可以在我的Android应用程序中生成firebase用户并提取用户信息,但是我在使用firebase令牌进行后端服务器身份验证时遇到了问题。

我希望能够将令牌传递给服务器,对其进行解码并验证用户,而不是传递电子邮件地址或其他一些个人信息。 这是文档中首选的身份验证方法

std::map<int,int>

使用signInWithGoogle我只需将令牌传递到服务器并点击// 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.处的端点 我可以通过这种方式验证和验证用户 (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中解码令牌?

1 个答案:

答案 0 :(得分:0)

我已经能够使用Org.BouncyCastle(https://www.nuget.org/packages/BouncyCastle/)和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);

related question中的注释也会有所帮助。