public override ServerAccessGrant Token() { base.ValidClient(); ServerAccessGrant accessGrant = OAuthService.GetServerAccessGrantByRefreshToken(RefreshToken); if (accessGrant == null) { OAuthError(AccessTokenRequestErrorCode.InvalidRequest, "refresh token invalid", 400); } if (ClientId != accessGrant.ClientId) { OAuthError(AccessTokenRequestErrorCode.InvalidRequest, "client id is not match.", 400); } //如果授权刷新凭证不在有效 if (!accessGrant.IsRefreshEffective()) { OAuthService.DeleteServerAccessGrant(accessGrant); OAuthError(AccessTokenRequestErrorCode.InvalidRequest, "refresh token expire", 400); } var refreshedToken = new ServerAccessGrant(accessGrant.ClientId, accessGrant.UserId) { Scope = accessGrant.Scope, GrantType = accessGrant.GrantType }; OAuthService.CreateServerAccessGrant(refreshedToken); OAuthService.DeleteServerAccessGrant(accessGrant); return(refreshedToken); }
/// <summary> /// 创建服务端授权对象 /// </summary> /// <param name="clientId">客户端ID</param> /// <param name="userId">用户ID</param> /// <returns>服务端授权对象</returns> public ServerAccessGrant CreateServerAccessGrant(int clientId, int userId = 0) { ServerAccessGrant accessGrant = new ServerAccessGrant(clientId, userId); serverAccessRepository.Create(accessGrant); return(accessGrant); }
public static bool TryValidToken(out ServerAccessGrant accessGrant) { var context = HttpContext.Current; if (context.IsAvailable()) { accessGrant = oauthService.TryGetToken(new HttpContextWrapper(context)); if (accessGrant != null && accessGrant.IsEffective()) { context.Items[ContextAccessGrantKey] = accessGrant; return(true); } } accessGrant = null; return(false); }
public void DeleteServerAccessGrant(ServerAccessGrant accessGrant) { serverAccessRepository.Delete(accessGrant); }
public void CreateServerAccessGrant(ServerAccessGrant accessGrant) { serverAccessRepository.Create(accessGrant); }
protected virtual void OnValidateSuccess(AuthorizationContext filterContext, ServerAccessGrant accessGrant) { }