protected override bool AuthorizeCore(HttpContextBase httpContext) { var rsa = new RSACryptoServiceProvider(); rsa.ImportCspBlob(Convert.FromBase64String(ConfigurationManager.AppSettings["PrivateAsymmetricKey"])); var analyzer = new StandardAccessTokenAnalyzer(rsa, rsa); var resourceServer = new ResourceServer(analyzer); try { httpContext.User = resourceServer.GetPrincipal( httpContext.Request, this.Roles.Split(new[] { ' ' }, StringSplitOptions.RemoveEmptyEntries)); } catch (ProtocolException) { httpContext.User = null; } return httpContext.User != null; }
protected override bool AuthorizeCore(HttpContextBase httpContext) { bool isAuthorized = false; try { HttpRequestBase request = httpContext.Request; if (!string.IsNullOrEmpty(request.Headers["Authorization"])) { if (request.Headers["Authorization"].StartsWith("Bearer ")) { RSACryptoServiceProvider authorizationServerSigningPublicKey = AuthorizationServerHost.CreateRsaCryptoServiceProvider(AuthorizationServerHost.AuthorizationServerSigningPublicKey); RSACryptoServiceProvider resourceServerEncryptionPrivateKey = AuthorizationServerHost.CreateRsaCryptoServiceProvider(AuthorizationServerHost.ResourceServerEncryptionPrivateKey); StandardAccessTokenAnalyzer tokenAnalyzer = new StandardAccessTokenAnalyzer(authorizationServerSigningPublicKey, resourceServerEncryptionPrivateKey); ResourceServer resourceServer = new ResourceServer(tokenAnalyzer); IPrincipal principal = resourceServer.GetPrincipal(request); if (principal.Identity.IsAuthenticated) { HttpContext.Current.User = principal; Thread.CurrentPrincipal = principal; isAuthorized = true; } var _token = resourceServer.GetAccessToken(request); if (this.RequiredScopes.Any()) { var token = resourceServer.GetAccessToken(request, this.RequiredScopes); } } } } catch { isAuthorized = false; } return isAuthorized; }
/// <summary> /// Initializes a new instance of the <see cref="OAuthAuthorizeAttribute"/> class. /// </summary> public OAuthAuthorizeAttribute() { var standardAccessTokenAnalyzer = new StandardAccessTokenAnalyzer(EncryptionKeys.GetAuthorizationServerSigningPublicKey(), EncryptionKeys.GetResourceServerEncryptionPrivateKey()); this.resourceServer = new ResourceServer(standardAccessTokenAnalyzer); }
public override void Execute(IHttpRequest request, IHttpResponse response, object requestDto) { try { var authServerKeys = AppHostBase.Instance.Container.ResolveNamed<ICryptoKeyPair>("authServer"); var dataServerKeys = AppHostBase.Instance.Container.ResolveNamed<ICryptoKeyPair>("dataServer"); var tokenAnalyzer = new StandardAccessTokenAnalyzer(authServerKeys.PublicSigningKey, dataServerKeys.PrivateEncryptionKey); var oauth2ResourceServer = new DotNetOpenAuth.OAuth2.ResourceServer(tokenAnalyzer); var wrappedRequest = new HttpRequestWrapper((HttpRequest)request.OriginalRequest); HttpContext.Current.User = oauth2ResourceServer.GetPrincipal(wrappedRequest, oauth2Scopes); } catch (ProtocolFaultResponseException x) { HandleOAuth2Exception(request, response, x); } }