Esempio n. 1
0
        private async Task <string> HandleSignIn(WsFederationMessage message, HttpContext context, string replyUrl)
        {
            var handler = CreateSessionHandler();

            var request = new SignInRequest
            {
                User       = context.User,
                Realm      = message.Wtrealm,
                Parameters = message.Parameters
            };

            var response = await _responseGenerator.GenerateSignInResponse(request);

            var wsTrustResponse = new WsTrustRequestSecurityTokenResponse
            {
                AppliesTo = new Uri(request.Realm),
                LifeTime  = new WsTrustLifetime
                {
                    Created = response.Token.ValidFrom,
                    Expires = response.Token.ValidTo
                },
                RequestedSecurityToken = response.Token
            };

            var sb = new StringBuilder();

            using (var xmlWriter = XmlWriter.Create(new StringWriter(sb)))
            {
                _serializer.Serialize(xmlWriter, wsTrustResponse);
            }

            _logger.LogInformation("Adding realm in session cookie {0}", message.Wtrealm);

            handler.AddRealm(context, message.Wtrealm);

            var wsResponse = new WsFederationMessage();

            wsResponse.Wa            = "wsignin1.0";
            wsResponse.Wresult       = sb.ToString();
            wsResponse.Wctx          = message.Wctx;
            wsResponse.IssuerAddress = replyUrl;

            var form = wsResponse.BuildFormPost();

            return(form);
        }