Skip to content
Snippets Groups Projects
Select Git revision
  • 2e7a45613f3e43a313e43fababccf5ab7f8dabf7
  • master default protected
  • dev_2022
  • patch-1
  • develop
  • 50-use-ubuntus-libhidapi
  • issue-highLevelDispatch
  • issue-highLevelDesign
  • issue-motorStartBug
  • issue-commandLayerDesign
  • v1.0
  • v0.4-rc.13
  • v0.4-rc.12
  • v0.4-rc.11
  • v0.4-rc.10
  • v0.4-rc.9
  • v0.3-rc.8
  • v0.3-rc.7
  • v0.3-rc.6
  • v0.3-rc.5
  • v0.3-rc.4
  • v0.3-rc.3
  • v0.3-rc.2
  • v0.3-rc.1
  • v0.3-rc
  • v0.2
  • v0.1.1
  • v0.1
28 results

isCommInterfaceValid.m

Blame
  • Code owners
    Assign users and groups as approvers for specific file changes. Learn more.
    HomeController.cs 3.01 KiB
    using System;
    using System.IdentityModel.Configuration;
    using System.IdentityModel.Services;
    using System.IdentityModel.Tokens;
    using System.Security.Claims;
    using Coscine.Api.STS.Security;
    using Microsoft.AspNetCore.Mvc;
    using Microsoft.AspNetCore.Http.Features;
    using Microsoft.AspNetCore.Http;
    using Coscine.Api.STS.Utils;
    using Coscine.ApiCommons;
    using Coscine.Database.Models;
    using System.Linq;
    
    namespace Coscine.Api.STS.Controllers
    {
        public class HomeController : Controller
        {
            public const string Action = "wa";
            public const string SignInString = "wsignin1.0";
            public const string SignOutString = "wsignout1.0";
            
            //[Authorize]
            [Route("/")]
            public ActionResult Index()
            {
                if (User.Identity.IsAuthenticated)
                {
                    var res = Request.Query[Action];
                    if (res.Count > 0)
                    {
                        var action = Request.Query[Action][0];
    
                        if (action == SignInString)
                        {
                            var userIdString = User.Identity.Name;
                            var userId = new Guid(userIdString);
    
                            TOSModel tosModel = new TOSModel();
                            var tosAcceptedList = tosModel.GetAllWhere((entry) => entry.UserId == userId);
                            var currentTos = Configurator.Configuration.GetStringAndWait("coscine/global/tos/version");
                            var tosAccepted = tosAcceptedList != null
                                && tosAcceptedList.Any((entry) => entry.Version == currentTos);
                            if (!tosAccepted)
                            {
                                string tosUrl = UrlGenerator.GetTOSUrl(Request, userIdString);
                                return Redirect(tosUrl);
                            }
    
                            var reqFeature = HttpContext.Features.Get<IHttpRequestFeature>();
                            var rawTarget = reqFeature.RawTarget;
                            var formData = ProcessSignIn(new Uri(Program.MainUrl + rawTarget), User);
                            return new ContentResult() { Content = formData, ContentType = "text/html" };
                        }
                    }
                }
                string loginUrl = UrlGenerator.GetLoginUrl(Request);
                return Redirect(loginUrl);
            }
    
            private string ProcessSignIn(Uri url, ClaimsPrincipal user)
            {
                var requestMessage = (SignInRequestMessage)WSFederationMessage.CreateFromUri(url);
                var signingCredentials = new X509SigningCredentials(CustomSecurityTokenService.GetCertificate());
    
                var config = new SecurityTokenServiceConfiguration(Request.Host.Value, signingCredentials);
                config.DefaultTokenLifetime = TimeSpan.FromDays(1);
                var sts = new CustomSecurityTokenService(config);
                var responseMessage = FederatedPassiveSecurityTokenServiceOperations.ProcessSignInRequest(requestMessage, user, sts);
                return responseMessage.WriteFormPost();
            }
        }
    }