예제 #1
0
        public override void ProcessSignInRequest(Scope scope, HttpContextBase httpContext)
        {
            var samlRequest = new AuthRequest(MultiProtocolIssuer.ReplyUrl.ToString(), _issuer, _audienceRestriction, _requestedAuthnContextComparisonMethod, _authnContextClassRefs);
            var preparedRequest = samlRequest.GetRequest(AuthRequest.AuthRequestFormat.Base64 | AuthRequest.AuthRequestFormat.Compressed | AuthRequest.AuthRequestFormat.UrlEncode);
            var returnUrl = GetReturnUrlQueryParameterFromUrl(httpContext.Request.Url.AbsoluteUri);
            httpContext.Response.Redirect(string.Format("{0}?SAMLRequest={1}&RelayState={2}", _identityProviderSSOURL, preparedRequest, returnUrl));

            httpContext.Response.End();
        }
예제 #2
0
        public override void ProcessSignInRequest(Scope scope, HttpContextBase httpContext)
        {
            var site = new Uri(httpContext.Request.Url.GetComponents(UriComponents.SchemeAndServer, UriFormat.Unescaped));
            var issuerUrl = new Uri(site,
                new Uri(Issuer.Url.GetComponents(UriComponents.SchemeAndServer, UriFormat.Unescaped)).MakeRelativeUri(Issuer.Url));

            var replyUrl = new Uri(site,
                new Uri(MultiProtocolIssuer.ReplyUrl.GetComponents(UriComponents.SchemeAndServer, UriFormat.Unescaped)).MakeRelativeUri(MultiProtocolIssuer.ReplyUrl));

            var identifierUrl = new Uri(site,
                new Uri(MultiProtocolIssuer.Identifier.GetComponents(UriComponents.SchemeAndServer, UriFormat.Unescaped)).MakeRelativeUri(MultiProtocolIssuer.Identifier));

            Logger.Debug(string.Format("ProcessSignInRequest, Issuer.Url {0}, ReplyUrl {1}, Identifier {2}", issuerUrl, replyUrl, identifierUrl));
            var client = new Clients.RelativeOpenIdClient(issuerUrl, identifierUrl);

            Logger.InfoFormat("Status code: {0}", httpContext.Response.StatusCode);

            scope.Url = new Uri(site,
                new Uri(scope.Url.GetComponents(UriComponents.SchemeAndServer, UriFormat.Unescaped)).MakeRelativeUri(scope.Url));
            client.RequestAuthentication(httpContext, replyUrl);
        }
예제 #3
0
        public static Scope ToModel(this ScopeElement scopeElement)
        {
            if (scopeElement == null)
                return null;

            var scope = new Scope
            {
                Identifier = new Uri(scopeElement.Identifier),
                Url = scopeElement.Uri.ReplaceWithLocalhostWhenRelative(),
                UseClaimsPolicyEngine = scopeElement.UseClaimsPolicyEngine
            };

            if (scopeElement.Issuers != null)
            {
                var issuers = new List<ClaimProvider>();
                foreach (AllowedClaimProviderElement allowedIssuer in scopeElement.Issuers)
                {
                    issuers.Add(allowedIssuer.ToModel());
                }

                scope.AllowedIssuers = issuers;
            }

            if (scopeElement.ClaimRequirements != null)
            {
                var claimRequirements = new List<ClaimTypeRequirement>();
                foreach (ClaimRequirementElement claimReq in scopeElement.ClaimRequirements)
                {
                    claimRequirements.Add(claimReq.ToModel());
                }

                scope.ClaimTypeRequirements = claimRequirements;
            }

            return scope;
        }
예제 #4
0
 public override void ProcessSignInRequest(Scope scope, HttpContextBase httpContext)
 {
     var facebook = new FacebookClient(this.applicationId, this.secret);
     facebook.RequestAuthentication(httpContext, this.MultiProtocolIssuer.ReplyUrl);
 }
예제 #5
0
 public override void ProcessSignInRequest(Scope scope, HttpContextBase httpContext)
 {
     var client = new GoogleOAuthClient(_clientId, _clientSecret);
     client.RequestAuthentication(httpContext, MultiProtocolIssuer.ReplyUrl);
 }
예제 #6
0
 public override void ProcessSignInRequest(Scope scope, HttpContextBase httpContext)
 {
     Logger.Debug(string.Format("ProcessSignInRequest, Issuer.Url {0}, ReplyUrl {1}", Issuer.Url, MultiProtocolIssuer.ReplyUrl));
     var client = new OpenIdClient(Issuer.Url,MultiProtocolIssuer.Identifier);
     client.RequestAuthentication(httpContext, MultiProtocolIssuer.ReplyUrl);
 }
예제 #7
0
 public override void ProcessSignInRequest(Scope scope, HttpContextBase httpContext)
 {
     RequestAuthentication(httpContext, this.Issuer.Url.ToString(), this.MultiProtocolIssuer.Identifier.ToString(), this.MultiProtocolIssuer.ReplyUrl.ToString());
 }
예제 #8
0
 public override void ProcessSignInRequest(Scope scope, HttpContextBase httpContext)
 {
     var client = new MicrosoftClient(this.appId, this.secretKey);
     client.RequestAuthentication(httpContext, this.MultiProtocolIssuer.ReplyUrl);
 }
예제 #9
0
 public override void ProcessSignInRequest(Scope scope, HttpContextBase httpContext)
 {
     var client = new TwitterClient(this.consumerKey, this.consumerSecret);
     client.RequestAuthentication(httpContext, this.MultiProtocolIssuer.ReplyUrl);
 }
예제 #10
0
 public override void ProcessSignInRequest(Scope scope, HttpContextBase httpContext)
 {
     var client = new SalesforceClient(appId, secretKey);
     client.RequestAuthentication(httpContext, MultiProtocolIssuer.ReplyUrl);
 }
예제 #11
0
 public override void ProcessSignInRequest(Scope scope, HttpContextBase httpContext)
 {
 }
예제 #12
0
 public override void ProcessSignInRequest(Scope scope, HttpContextBase httpContext)
 {
     var client = new YahooOpenIdClient();
     client.RequestAuthentication(httpContext, this.MultiProtocolIssuer.ReplyUrl);
 }
예제 #13
0
 public override void ProcessSignInRequest(Scope scope, HttpContextBase httpContext)
 {
     Logger.Info(string.Format("process signin request! Identifier: {0}, ReplyUrl: {1}", MultiProtocolIssuer.Identifier, MultiProtocolIssuer.ReplyUrl));
     var identityProviderUrl = string.IsNullOrEmpty(_wsfedEndpoint) ? Issuer.Url.ToString() : _wsfedEndpoint;
     RequestAuthentication(httpContext, identityProviderUrl, MultiProtocolIssuer.Identifier.ToString(), MultiProtocolIssuer.ReplyUrl.ToString());
 }
예제 #14
0
 public override void ProcessSignInRequest(Scope scope, HttpContextBase httpContext)
 {
     var client = new AzureAdOAuthClient(_appId, _secretKey, _graphApiEndpoint, _tokenEndpoint, _authorizationEndpoint, _graphApiVersion);
     client.RequestAuthentication(httpContext, MultiProtocolIssuer.ReplyUrl);
 }
예제 #15
0
 public abstract void ProcessSignInRequest(Scope scope, HttpContextBase httpContext);