public override async Task<HttpResponseMessage> ExecuteAsync(System.Threading.CancellationToken cancellationToken)
        {
            _request.SetSuppressXfo();

            Logger.Info("Posting to " + _response.RedirectUri);

            // see if we have a DefaultViewService for the IViewService 
            // to allow for customization of the authorize response page
            var ctx = _request.GetOwinContext();
            var defaultViewSvc = ctx.ResolveDependency<IViewService>() as DefaultViewService;
            if (defaultViewSvc != null)
            {
                Logger.Debug("Using DefaultViewService to render authorization response HTML");

                var vm = new AuthorizeResponseViewModel
                {
                    SiteName = _response.Request.Options.SiteName,
                    SiteUrl = _request.GetIdentityServerBaseUrl(),
                    ResponseFormUri = _response.RedirectUri,
                    ResponseFormFields = _response.ToNameValueCollection().ToFormPost()
                };

                var result = new HtmlStreamActionResult(() => defaultViewSvc.AuthorizeResponse(vm));
                return await result.ExecuteAsync(cancellationToken);
            }

            Logger.Debug("Using AssetManager to render authorization response HTML");
            return await base.ExecuteAsync(cancellationToken);
        }
Ejemplo n.º 2
0
         /// <summary>
        /// Loads the HTML for the authorize response page.
        /// </summary>
        /// <param name="model">The model.</param>
        /// <returns>
        /// Stream for the HTML
        /// </returns>
        public virtual async Task<Stream> AuthorizeResponse(AuthorizeResponseViewModel model)
        {
            var newModel = new CommonViewModel
            {
                SiteName = model.SiteName, SiteUrl = model.SiteUrl
            };

            var scripts = new List<string>();
            scripts.AddRange(config.Scripts ?? Enumerable.Empty<string>());
            scripts.Add("~/assets/app.FormPostResponse.js");

            var data = BuildModelDictionary(newModel, AuthorizeResponseView, config.Stylesheets, scripts);
            data.Add("responseUri", model.ResponseFormUri);
            data.Add("responseFields", model.ResponseFormFields);

            string html = await LoadHtmlTemplate(AuthorizeResponseView);
            html = FormatHtmlTemplate(html, data);

            return html.ToStream();
        }