Я рассматриваю код, использующий поток OAuth OpenIdConnect в ядре asp.net для аутентификации пользователя в Google. Как только аутентификация установлена, в OnTicketRecieved
есть обработчик, который получает полученный токен доступа и токен обновления и передает его другой конечной точке в приложении:
OnTicketReceived = context =>
{
string returnUrl = "/Somewhere/else";
string refreshToken = context.Properties.Items.ContainsKey(".Token.refresh_token") ? context.Properties.Items[".Token.refresh_token"] : "none";
string accessToken = context.Properties.Items.ContainsKey(".Token.access_token") ? context.Properties.Items[".Token.access_token"] : "none";
var email = context.Principal.Claims.Where(c => c.Type == ClaimTypes.Email).Select(c => c.Value).SingleOrDefault();
returnUrl += $"?refreshToken={refreshToken}&accessToken={accessToken}&email={email}";
context.ReturnUri = returnUrl + WebUtility.UrlEncode(returnUrl);
return Task.CompletedTask;
},
Мой вопрос - насколько это безопасно? Это эффективно просачивающиеся токены обновления, которые можно увидеть - хотя возможности того, что вы можете с ними сделать, очень ограничены, так как Google OAuth мы привязаны к конечным точкам, с которыми мы можем взаимодействовать, и секрет приложения также должен быть известен в чтобы сделать что-нибудь вредоносное с этими токенами
Спасибо
Мэтт