62,046
社区成员
发帖
与我相关
我的任务
分享
public override async Task Invoke(IOwinContext context)
{
// make sure authentication did not happen else where in the pipeline
if (context.Request.User == null
|| context.Request.User.Identity == null
|| !context.Request.User.Identity.IsAuthenticated)
{
var rawToken = GetRawToken(context);
rawToken =
"eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJuYW1laWQiOiJ3YWFkfG1pZ3VlbEBpbmZvY2xpZW50MS5vbm1pY3Jvc29mdC5jb20iLCJ1bmlxdWVfbmFtZSI6Ik1pZ3VlbCB1bmRlZmluZWQiLCJ1c2VyX2lkIjoid2FhZHxtaWd1ZWxAaW5mb2NsaWVudDEub25taWNyb3NvZnQuY29tIiwiZ2l2ZW5fbmFtZSI6Ik1pZ3VlbCIsImNvbm5lY3Rpb24iOiJ3b25kZXJ3YXJlb25saW5lLm9ubWljcm9zb2Z0LmNvbSIsInBpY3R1cmUiOiJodHRwczovL3NlY3VyZS5ncmF2YXRhci5jb20vYXZhdGFyLzU2MDY1YjYzZTI0MjY3ZmY2OWIyMmM1OTViMzJmODBmP3M9NDgwXHUwMDI2cj1wZ1x1MDAyNmQ9aHR0cHMlM0ElMkYlMkZzc2wuZ3N0YXRpYy5jb20lMkZzMiUyRnByb2ZpbGVzJTJGaW1hZ2VzJTJGc2lsaG91ZXR0ZTgwLnBuZyIsInByb3ZpZGVyIjoid2FhZCIsInByb3ZpZGVyX2FjY2Vzc190b2tlbiI6ImV5SjBlWEFpT2lKS1YxUWlMQ0poYkdjaU9pSlNVekkxTmlJc0luZzFkQ0k2SWsxdVExOVdXbU5CVkdaTk5YQlBXV2xLU0UxaVlUbG5iMFZMV1NKOS5leUpoZFdRaU9pSXdNREF3TURBd01pMHdNREF3TFRBd01EQXRZekF3TUMwd01EQXdNREF3TURBd01EQXZaM0poY0dndWQybHVaRzkzY3k1dVpYUWlMQ0pwYzNNaU9pSm9kSFJ3Y3pvdkwzTjBjeTUzYVc1a2IzZHpMbTVsZEM5aU16STVNVE5tTWkxa09XTTNMVFEyTm1FdFltSTVOUzAyWW1SbU16TmxZMlpoT1RRdklpd2lhV0YwSWpveE5ESTBPREExTXpJMUxDSnVZbVlpT2pFME1qUTRNRFV6TWpVc0ltVjRjQ0k2TVRReU5EZ3dPVEl5TlN3aWRtVnlJam9pTVM0d0lpd2lkR2xrSWpvaVlqTXlPVEV6WmpJdFpEbGpOeTAwTmpaaExXSmlPVFV0Tm1Ka1pqTXpaV05tWVRrMElpd2liMmxrSWpvaVpXWmpOemRsTW1FdE16YzBNaTAwTW1Rd0xUZzJNelV0WXpreE9HTmtZakEwWmpreUlpd2ljM1ZpSWpvaVpXWmpOemRsTW1FdE16YzBNaTAwTW1Rd0xUZzJNelV0WXpreE9HTmtZakEwWmpreUlpd2lhV1J3SWpvaWFIUjBjSE02THk5emRITXVkMmx1Wkc5M2N5NXVaWFF2WWpNeU9URXpaakl0WkRsak55MDBOalpoTFdKaU9UVXRObUprWmpNelpXTm1ZVGswTHlJc0ltRndjR2xrSWpvaU9XTXlPR014WVdRdFpHTmxZaTAwWVRnM0xUZzFaVE10WTJaa1pHTXpPVFUzTmpOaElpd2lZWEJ3YVdSaFkzSWlPaUl4SW4wLnRXTWZGNGUzcV9uendqaUZHcnZFWFQ5YXczaUo2aXMtVWRyU2dFYjZUcjFsMDJQaVJyc3p4cFZVb2lOZ0pfWGlVemtwZmJEd3pfUnhzTm1YVGkyZ2xoZWlueVExYVJIYkkxeS1maG02cUVSNFVJLVh3aVZBZWt1RUxhOEw3d3lST19fRnFZY0ViTm1uQmVnS19uZERrY2dObFJLVU1XM1U1QlF5U1R4N0hJeVlfTU5pVG92WFJ4U3BGRWZWMXJ0cTI5RnEzSHN6amJfZjFGZTRTaFQxZnB4S2Y1SXVuZ29tT3JZNHBpUGEwV2U3M1pJbHJCYW9QOFRjRElDQ244ZUNyeGkxM05XNjJGN1pyaV9SX3pJNy1UVDZ4Qi1iVU5vaXZSODhySDdQTHRTUWJfb2xRZkdXaFAtY1N6dE9iYXMxZWFzU1lsOVpZbkJkQWdmbDVOcEJJZyIsImlkX3Rva2VuIjoiZXlKMGVYQWlPaUpLVjFRaUxDSmhiR2NpT2lKSVV6STFOaUo5LmV5SmZhV1FpT2lJNVkyRmxPVFZtWlRJeE5UYzBNVEUwWWpVNE1EYzNaREV5TkdVMlpUaGpNaUlzSW5Wd2JpSTZJbTFwWjNWbGJFQnBibVp2WTJ4cFpXNTBNUzV2Ym0xcFkzSnZjMjltZEM1amIyMGlMQ0poZW5WeVpWOXBaQ0k2SWtkSFlYWnRiR05GYmxWek56bGpUSFU0YzBwWExVWmxUekl5Y0cxVFIybFFNamhSUkZsdlkyZDBhMGtpTENKbmFYWmxibDl1WVcxbElqb2lUV2xuZFdWc0lpd2libWxqYTI1aGJXVWlPaUp0YVdkMVpXeEFhVzVtYjJOc2FXVnVkREV1YjI1dGFXTnliM052Wm5RdVkyOXRJaXdpZEdWdVlXNTBhV1FpT2lKbU56QTBOR1ExTWkxaVlUQXpMVFF5TnpRdFltTm1NaTA1WmpGaU9USm1aamsxWWpraUxDSmxiV0ZwYkNJNkltMXBaM1ZsYkVCcGJtWnZZMnhwWlc1ME1TNXZibTFwWTNKdmMyOW1kQzVqYjIwaUxDSmxiV0ZwYkY5MlpYSnBabWxsWkNJNmRISjFaU3dpYm1GdFpTSTZJazFwWjNWbGJDQjFibVJsWm1sdVpXUWlMQ0pqYkdsbGJuUkpSQ0k2SWxacVMxUk9OMnhYZVRsblJFY3lkVWgwVTNGMWNFSTJaM2R1TmsxSFdXaDZJaXdpY0dsamRIVnlaU0k2SW1oMGRIQnpPaTh2YzJWamRYSmxMbWR5WVhaaGRHRnlMbU52YlM5aGRtRjBZWEl2TlRZd05qVmlOak5sTWpReU5qZG1aalk1WWpJeVl6VTVOV0l6TW1ZNE1HWV9jejAwT0RBbWNqMXdaeVprUFdoMGRIQnpKVE5CSlRKR0pUSkdjM05zTG1kemRHRjBhV011WTI5dEpUSkdjeklsTWtad2NtOW1hV3hsY3lVeVJtbHRZV2RsY3lVeVJuTnBiR2h2ZFdWMGRHVTRNQzV3Ym1jaUxDSjFjMlZ5WDJsa0lqb2lkMkZoWkh4dGFXZDFaV3hBYVc1bWIyTnNhV1Z1ZERFdWIyNXRhV055YjNOdlpuUXVZMjl0SWl3aWFXUmxiblJwZEdsbGN5STZXM3NpZFhObGNsOXBaQ0k2SW0xcFozVmxiRUJwYm1adlkyeHBaVzUwTVM1dmJtMXBZM0p2YzI5bWRDNWpiMjBpTENKaFkyTmxjM05mZEc5clpXNGlPaUpsZVVvd1pWaEJhVTlwU2t0V01WRnBURU5LYUdKSFkybFBhVXBUVlhwSk1VNXBTWE5KYm1jeFpFTkpOa2xyTVhWUk1UbFhWMjFPUWxaSFdrNU9XRUpRVjFkc1MxTkZNV2xaVkd4dVlqQldURmRUU2prdVpYbEthR1JYVVdsUGFVbDNUVVJCZDAxRVFYZE5hVEIzVFVSQmQweFVRWGROUkVGMFdYcEJkMDFETUhkTlJFRjNUVVJCZDAxRVFYZE5SRUYyV2pOS2FHTkhaM1ZrTW14MVdrYzVNMk41TlhWYVdGRnBURU5LY0dNelRXbFBhVXB2WkVoU2QyTjZiM1pNTTA0d1kzazFNMkZYTld0aU0yUjZURzAxYkdSRE9XbE5la2sxVFZST2JVMXBNV3RQVjAwelRGUlJNazV0UlhSWmJVazFUbE13TWxsdFVtMU5lazVzV1RKYWFFOVVVWFpKYVhkcFlWZEdNRWxxYjNoT1JFa3dUMFJCTVUxNlNURk1RMHAxV1cxWmFVOXFSVEJOYWxFMFRVUlZlazFxVlhOSmJWWTBZME5KTmsxVVVYbE9SR2QzVDFSSmVVNVRkMmxrYlZaNVNXcHZhVTFUTkhkSmFYZHBaRWRzYTBscWIybFphazE1VDFSRmVscHFTWFJhUkd4cVRua3dNRTVxV21oTVYwcHBUMVJWZEU1dFNtdGFhazE2V2xkT2JWbFVhekJKYVhkcFlqSnNhMGxxYjJsYVYxcHFUbnBrYkUxdFJYUk5lbU13VFdrd01FMXRVWGRNVkdjeVRYcFZkRmw2YTNoUFIwNXJXV3BCTUZwcWEzbEphWGRwWXpOV2FVbHFiMmxhVjFwcVRucGtiRTF0UlhSTmVtTXdUV2t3TUUxdFVYZE1WR2N5VFhwVmRGbDZhM2hQUjA1cldXcEJNRnBxYTNsSmFYZHBZVmRTZDBscWIybGhTRkl3WTBoTk5reDVPWHBrU0UxMVpESnNkVnBIT1ROamVUVjFXbGhSZGxscVRYbFBWRVY2V21wSmRGcEViR3BPZVRBd1RtcGFhRXhYU21sUFZGVjBUbTFLYTFwcVRYcGFWMDV0V1ZSck1FeDVTWE5KYlVaM1kwZHNhMGxxYjJsUFYwMTVUMGROZUZsWFVYUmFSMDVzV1drd01GbFVaek5NVkdjeFdsUk5kRmt5V210YVIwMTZUMVJWTTA1cVRtaEphWGRwV1ZoQ2QyRlhVbWhaTTBscFQybEplRWx1TUM1MFYwMW1SalJsTTNGZmJucDNhbWxHUjNKMlJWaFVPV0YzTTJsS05tbHpMVlZrY2xOblJXSTJWSEl4YkRBeVVHbFNjbk42ZUhCV1ZXOXBUbWRLWDFocFZYcHJjR1ppUkhkNlgxSjRjMDV0V0ZScE1tZHNhR1ZwYm5sUk1XRlNTR0pKTVhrdFptaHRObkZGVWpSVlNTMVlkMmxXUVdWcmRVVk1ZVGhNTjNkNVVrOWZYMFp4V1dORllrNXRia0psWjB0ZmJtUkVhMk5uVG14U1MxVk5Wek5WTlVKUmVWTlVlRGRJU1hsWlgwMU9hVlJ2ZGxoU2VGTndSa1ZtVmpGeWRIRXlPVVp4TTBoemVtcGlYMll4Um1VMFUyaFVNV1p3ZUV0bU5VbDFibWR2YlU5eVdUUndhVkJoTUZkbE56TmFTV3h5UW1GdlVEaFVZMFJKUTBOdU9HVkRjbmhwTVROT1Z6WXlSamRhY21sZlVsOTZTVGN0VkZRMmVFSXRZbFZPYjJsMlVqZzRja2czVUV4MFUxRmlYMjlzVVdaSFYyaFFMV05UZW5SUFltRnpNV1ZoYzFOWmJEbGFXVzVDWkVGblptdzFUbkJDU1djaUxDSndjbTkyYVdSbGNpSTZJbmRoWVdRaUxDSmpiMjV1WldOMGFXOXVJam9pZDI5dVpHVnlkMkZ5Wlc5dWJHbHVaUzV2Ym0xcFkzSnZjMjltZEM1amIyMGlMQ0pwYzFOdlkybGhiQ0k2Wm1Gc2MyVjlYU3dpWTNKbFlYUmxaRjloZENJNklqSXdNVFV0TURFdE1UTlVNVGs2TlRnNk1qTXVOVE14V2lJc0ltZHNiMkpoYkY5amJHbGxiblJmYVdRaU9pSTVSa1ZIV1dSS05HVnFUVUZqZFZFNFVFdDRlbFk0V0RkbVFXc3ljVlJvZVNJc0ltbHpjeUk2SW1oMGRIQnpPaTh2ZDNkdmJteHBibVV1WVhWMGFEQXVZMjl0THlJc0luTjFZaUk2SW5kaFlXUjhiV2xuZFdWc1FHbHVabTlqYkdsbGJuUXhMbTl1YldsamNtOXpiMlowTG1OdmJTSXNJbUYxWkNJNklsWnFTMVJPTjJ4WGVUbG5SRWN5ZFVoMFUzRjFjRUkyWjNkdU5rMUhXV2g2SWl3aVpYaHdJam94TkRJME9EUXhOakkzTENKcFlYUWlPakUwTWpRNE1EVTJNamQ5LloxRFJudWNMdmNKZkkzMy15OUlINV9Cd0FTejdzM29neGxiUlJyeWZjUUUiLCJhY2Nlc3NfdG9rZW4iOiJoR0JCYlBBcXVNZXkxWlhsIiwidGVuYW50aWQiOiJmNzA0NGQ1Mi1iYTAzLTQyNzQtYmNmMi05ZjFiOTJmZjk1YjkiLCJyb2xlIjpbIkNVU1RPTUVSIiwiQURNSU5JU1RSQVRPUiJdLCJlbWFpbCI6InNjb3R0LnNhdmlub0BpbnZlbnN5cy5jb20iLCJodHRwOi8vc2NoZW1hcy5taWNyb3NvZnQuY29tL2FjY2Vzc2NvbnRyb2xzZXJ2aWNlLzIwMTAvMDcvY2xhaW1zL2lkZW50aXR5cHJvdmlkZXIiOiJBU1AuTkVUIElkZW50aXR5Iiwic2NwIjoidXNlcl9pbXBlcnNvbmF0aW9uIiwidGlkIjoiZjcwNDRkNTItYmEwMy00Mjc0LWJjZjItOWYxYjkyZmY5NWI5IiwiaXNzIjoiaHR0cHM6Ly9zdHMud2luZG93cy5uZXQvZjcwNDRkNTItYmEwMy00Mjc0LWJjZjItOWYxYjkyZmY5NWI5LyIsImF1ZCI6Imh0dHBzOi8vbmNoaWNjb250ZW50c2VydmVyLmNsb3VkYXBwLm5ldCIsImV4cCI6MTQyNDg5MjAzMiwibmJmIjoxNDI0ODA1NjMyfQ.Ka0P_XsRfFx0FBy95ox_AAwjzTUxmeBTu3igbRYzg7Y";
if (rawToken == null)
{
SetUnauthorizedResponse(context);
return;
}
var tokenHandler = new JwtSecurityTokenHandler();
var token = tokenHandler.ReadToken(rawToken) as JwtSecurityToken;
var nullTakenFlag = token == null;
var tenantId = GetTenantId(token);
var validIssuer = !nullTakenFlag ? token.Issuer : string.Empty;
var validFrom = nullTakenFlag ? new DateTime() : token.ValidFrom;
var validTo = nullTakenFlag ? new DateTime() : token.ValidTo;
var email = token.Claims.FirstOrDefault(p => p.Type == "email").Value;
if (tenantId == null
|| IsAccountExists(email))
{
SetUnauthorizedResponse(context);
return;
}
var validationParameter = new TokenValidationParameters
{
ValidAudience = audience,
ValidIssuer = validIssuer,
IssuerSigningToken =
new BinarySecretSecurityToken(
Convert.FromBase64String(jwtTokenSharedKey.Replace("__CBE_V1__", "")))
};
try
{
SecurityToken securityToken;
var claimsPrincipal = tokenHandler.ValidateToken(Convert.ToString(token)
, validationParameter, out securityToken);
if (claimsPrincipal.FindFirst(ScopeClaim).Value != ScopeValue)
{
SetUnauthorizedResponse(context);
}
context.Request.User = claimsPrincipal;
}
catch (SecurityTokenValidationException ex)
{
SetUnauthorizedResponse(context);
}
catch (Exception ex)
{
context.Response.StatusCode = (int) HttpStatusCode.InternalServerError;
context.Response.ReasonPhrase = ex.Message;
}
if (Next != null)
{
await Next.Invoke(context);
}
}
}
请看代码 进入了 exception