Skip to content
Snippets Groups Projects
Code owners
Assign users and groups as approvers for specific file changes. Learn more.
STSController.cs 1.37 KiB
using Coscine.Api.LegacySTS.ModelingObjects;
using Coscine.Api.LegacySTS.Security;
using Microsoft.AspNetCore.Mvc;
using System;
using System.IdentityModel.Configuration;
using System.IdentityModel.Services;
using System.IdentityModel.Tokens;
using System.Web;

namespace Coscine.Api.LegacySTS.Controllers
{
    public class STSController : Controller
    {

        public STSController()
        {
        }

        [HttpPost("[controller]/processSignIn/{url}/{hostValue}")]
        public IActionResult ProcessSignIn(string url, string hostValue, [FromBody] SignInInstance signInInstance)
        {
            var user = signInInstance.User;
            var userObject = signInInstance.UserObject;

            var requestMessage = (SignInRequestMessage)WSFederationMessage.CreateFromUri(new Uri(HttpUtility.UrlDecode(url)));
            var signingCredentials = new X509SigningCredentials(CustomSecurityTokenService.GetCertificate());

            var config = new SecurityTokenServiceConfiguration(hostValue, signingCredentials);
            config.DefaultTokenLifetime = TimeSpan.FromDays(1);
            var sts = new CustomSecurityTokenService(config, userObject);
            SignInResponseMessage responseMessage = FederatedPassiveSecurityTokenServiceOperations.ProcessSignInRequest(requestMessage, user, sts);
            return Ok(responseMessage.WriteFormPost());
        }

    }
}