我正在查看一些代码,这些代码使用asp.net核心中的OpenIdConnect OAuth流来针对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,我们被锁定在可以与之交互的终结点上,并且还需要在为了对这些令牌进行任何恶意的攻击
谢谢
马特