<small id='GtDvc'></small><noframes id='GtDvc'>

    1. <legend id='GtDvc'><style id='GtDvc'><dir id='GtDvc'><q id='GtDvc'></q></dir></style></legend>
      • <bdo id='GtDvc'></bdo><ul id='GtDvc'></ul>
      <i id='GtDvc'><tr id='GtDvc'><dt id='GtDvc'><q id='GtDvc'><span id='GtDvc'><b id='GtDvc'><form id='GtDvc'><ins id='GtDvc'></ins><ul id='GtDvc'></ul><sub id='GtDvc'></sub></form><legend id='GtDvc'></legend><bdo id='GtDvc'><pre id='GtDvc'><center id='GtDvc'></center></pre></bdo></b><th id='GtDvc'></th></span></q></dt></tr></i><div id='GtDvc'><tfoot id='GtDvc'></tfoot><dl id='GtDvc'><fieldset id='GtDvc'></fieldset></dl></div>

    2. <tfoot id='GtDvc'></tfoot>

      OWIN OpenID 连接授权无法授权安全控制器/操作

      OWIN OpenID connect authorization fails to authorize secured controller / actions(OWIN OpenID 连接授权无法授权安全控制器/操作)

      <small id='DlyFK'></small><noframes id='DlyFK'>

          <bdo id='DlyFK'></bdo><ul id='DlyFK'></ul>
        • <i id='DlyFK'><tr id='DlyFK'><dt id='DlyFK'><q id='DlyFK'><span id='DlyFK'><b id='DlyFK'><form id='DlyFK'><ins id='DlyFK'></ins><ul id='DlyFK'></ul><sub id='DlyFK'></sub></form><legend id='DlyFK'></legend><bdo id='DlyFK'><pre id='DlyFK'><center id='DlyFK'></center></pre></bdo></b><th id='DlyFK'></th></span></q></dt></tr></i><div id='DlyFK'><tfoot id='DlyFK'></tfoot><dl id='DlyFK'><fieldset id='DlyFK'></fieldset></dl></div>

            • <tfoot id='DlyFK'></tfoot>
            • <legend id='DlyFK'><style id='DlyFK'><dir id='DlyFK'><q id='DlyFK'></q></dir></style></legend>
                <tbody id='DlyFK'></tbody>

                本文介绍了OWIN OpenID 连接授权无法授权安全控制器/操作的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着跟版网的小编来一起学习吧!

                问题描述

                我正在开展一个项目,其中第三方提供商将充当基于 Oauth2 的授权服务器.一个基于 Asp.net MVC 5 的客户端,它将用户发送到授权服务器进行身份验证(使用登录名/密码),并且身份验证服务器将返回一个访问令牌返回给 MVC 客户端.对资源服务器 (API) 的任何进一步调用都将使用访问令牌进行.

                I am working on a project where a third party provider will act as an Oauth2 based Authorization Server. An Asp.net MVC 5 based client which will send the user to the authorization server to authenticate (using login / password) and the auth server will return an access token back to the MVC client. Any further calls to resource servers (APIs) will be made using the access token.

                为了实现这一点,我使用了 Microsoft.Owin.Security.OpenIdConnect 和 UseOpenIdConnectAuthentication 扩展.我能够成功重定向并从身份验证服务器获取访问令牌,但客户端没有创建身份验证 Cookie.每次我尝试访问安全页面时,都会获得带有访问令牌的回调页面.

                To achieve this I am using Microsoft.Owin.Security.OpenIdConnect and the UseOpenIdConnectAuthentication extension. I am able to successfully redirect and get the access token from the auth server but the client is not creating an Authentication Cookie. Every time I try to access a secured page, I get the callback page with access token.

                我在这里缺少什么?我当前的代码如下.

                What am I missing here? My current code is below.

                安全控制器操作:

                namespace MvcWebApp.Controllers
                {    
                    public class SecuredController : Controller
                    {
                        // GET: Secured
                        [Authorize]
                        public ActionResult Index()
                        {
                            return View((User as ClaimsPrincipal).Claims);
                        }
                    }
                }
                

                启动类:

                public class Startup
                {
                    public void Configuration(IAppBuilder app)
                    {
                        app.SetDefaultSignInAsAuthenticationType("ClientCookie");
                
                        app.UseCookieAuthentication(new CookieAuthenticationOptions
                        {
                            AuthenticationMode = AuthenticationMode.Active,
                            AuthenticationType = "ClientCookie",
                            CookieName = CookieAuthenticationDefaults.CookiePrefix + "ClientCookie",
                            ExpireTimeSpan = TimeSpan.FromMinutes(5)
                        });
                
                        // ***************************************************************************
                        // Approach 1 : ResponseType = "id_token token"
                        // ***************************************************************************
                        app.UseOpenIdConnectAuthentication(new OpenIdConnectAuthenticationOptions
                        {
                            AuthenticationMode = AuthenticationMode.Active,
                            AuthenticationType = OpenIdConnectAuthenticationDefaults.AuthenticationType,
                            SignInAsAuthenticationType = app.GetDefaultSignInAsAuthenticationType(),
                            Authority = "https://thirdparty.com.au/oauth2",
                            ClientId = "_Th4GVMa0JSrJ8RKcZrzbcexk5ca",
                            ClientSecret = "a3GVJJbLHkrn9nJRj3IGNvk5eGQa",
                            RedirectUri = "http://mvcwebapp.local/",
                            ResponseType = "id_token token",
                            Scope = "openid",
                
                            Configuration = new OpenIdConnectConfiguration
                            {
                                AuthorizationEndpoint = "https://thirdparty.com.au/oauth2/authorize",
                                TokenEndpoint = "https://thirdparty.com.au/oauth2/token",
                                UserInfoEndpoint = "https://thirdparty.com.au/oauth2/userinfo",
                            },
                
                            Notifications = new OpenIdConnectAuthenticationNotifications
                            {
                                SecurityTokenValidated = n =>
                                {
                                    var token = n.ProtocolMessage.AccessToken;
                
                                    // persist access token in cookie
                                    if (!string.IsNullOrEmpty(token))
                                    {
                                        n.AuthenticationTicket.Identity.AddClaim(
                                            new Claim("access_token", token));
                                    }
                
                                    return Task.FromResult(0);
                                },
                
                                AuthenticationFailed = notification =>
                                {
                                    if (string.Equals(notification.ProtocolMessage.Error, "access_denied", StringComparison.Ordinal))
                                    {
                                        notification.HandleResponse();
                
                                        notification.Response.Redirect("/");
                                    }
                
                                    return Task.FromResult<object>(null);
                                }
                            }
                        });
                
                        // ***************************************************************************
                        // Approach 2 : ResponseType = "code"
                        // ***************************************************************************
                        //app.UseOpenIdConnectAuthentication(new OpenIdConnectAuthenticationOptions
                        //{
                        //    AuthenticationMode = AuthenticationMode.Active,
                        //    AuthenticationType = OpenIdConnectAuthenticationDefaults.AuthenticationType,
                        //    SignInAsAuthenticationType = app.GetDefaultSignInAsAuthenticationType(),
                        //    Authority = "https://thirdparty.com.au/oauth2",
                        //    ClientId = "_Th4GVMa0JSrJ8RKcZrzbcexk5ca",
                        //    ClientSecret = "a3GVJJbLHkrn9nJRj3IGNvk5eGQa",
                        //    RedirectUri = "http://mvcwebapp.local/",
                        //    ResponseType = "code",
                        //    Scope = "openid",
                
                        //    Configuration = new OpenIdConnectConfiguration
                        //    {
                        //        AuthorizationEndpoint = "https://thirdparty.com.au/oauth2/authorize",
                        //        TokenEndpoint = "https://thirdparty.com.au/oauth2/token",
                        //        UserInfoEndpoint = "https://thirdparty.com.au/oauth2/userinfo",
                        //    },
                
                        //    Notifications = new OpenIdConnectAuthenticationNotifications
                        //    {
                        //        AuthorizationCodeReceived = async (notification) =>
                        //        {
                        //            using (var client = new HttpClient())
                        //            {
                        //                var configuration = await notification.Options.ConfigurationManager.GetConfigurationAsync(notification.Request.CallCancelled);                                        
                        //                var request = new HttpRequestMessage(HttpMethod.Get, configuration.TokenEndpoint);
                        //                request.Content = new FormUrlEncodedContent(new Dictionary<string, string>
                        //                {
                        //                    {OpenIdConnectParameterNames.ClientId, notification.Options.ClientId},
                        //                    {OpenIdConnectParameterNames.ClientSecret, notification.Options.ClientSecret},
                        //                    {OpenIdConnectParameterNames.Code, notification.ProtocolMessage.Code},
                        //                    {OpenIdConnectParameterNames.GrantType, "authorization_code"},
                        //                    {OpenIdConnectParameterNames.ResponseType, "token"},
                        //                    {OpenIdConnectParameterNames.RedirectUri, notification.Options.RedirectUri}
                        //                });
                
                        //                var response = await client.SendAsync(request, notification.Request.CallCancelled);
                        //                response.EnsureSuccessStatusCode();
                
                        //                var payload = JObject.Parse(await response.Content.ReadAsStringAsync());
                
                        //                // Add the access token to the returned ClaimsIdentity to make it easier to retrieve.
                        //                notification.AuthenticationTicket.Identity.AddClaim(new Claim(
                        //                    type: OpenIdConnectParameterNames.AccessToken,
                        //                    value: payload.Value<string>(OpenIdConnectParameterNames.AccessToken)));
                        //            }
                        //        }
                        //    }
                
                        /
                                本站部分内容来源互联网,如果有图片或者内容侵犯了您的权益,请联系我们,我们会在确认后第一时间进行删除!
                                
                上一篇:Sonarqube C# 扫描器异常:“java.lang.IllegalArgumentException: is n 下一篇:FCM(Firebase 云消息传递)发送到多个设备
                相关文档推荐 在 .NET 中的 Active Directory 组中添加和删除用户 Adding and removing users from Active Directory groups in .NET(在 .NET 中的 Active Directory 组中添加和删除用户) 在 linq 中设置相等 set equality in linq(在 linq 中设置相等) HashSet 转换为 List HashSet conversion to List(HashSet 转换为 List) 如何为 webBrowser 导航事件设置超时 How to set timeout for webBrowser navigate event(如何为 webBrowser 导航事件设置超时) 测试两个IEnumerable&lt;T&gt;具有相同频率的相同值 Test whether two IEnumerablelt;Tgt; have the same values with the same frequencies(测试两个IEnumerablelt;Tgt;具有相同频率的相同值) 您如何确定两个 HashSet 是否相等(按值,而不是按引用)? How do you determine if two HashSets are equal (by value, not by reference)?(您如何确定两个 HashSet 是否相等(按值,而不是按引用)?)
                <q id='ycLgy'></q><tfoot id='ycLgy'></tfoot><tbody id='ycLgy'></tbody><small id='ycLgy'></small><noframes id='ycLgy'><small id='ycLgy'><b id='ycLgy'></b><style id='ycLgy'></style><i id='ycLgy'></i><small id='ycLgy'><dl id='ycLgy'></dl><fieldset id='ycLgy'><form id='ycLgy'><dt id='ycLgy'><code id='ycLgy'></code><code id='ycLgy'><div id='ycLgy'></div></code></dt></form></fieldset></small></small><thead id='ycLgy'><kbd id='ycLgy'></kbd><sup id='ycLgy'><th id='ycLgy'></th></sup></thead><sup id='ycLgy'><strong id='ycLgy'><i id='ycLgy'></i></strong><small id='ycLgy'><div id='ycLgy'></div></small><ins id='ycLgy'></ins></sup><legend id='ycLgy'><table id='ycLgy'></table></legend><legend id='ycLgy'><style id='ycLgy'><dir id='ycLgy'><q id='ycLgy'></q></dir></style></legend><bdo id='ycLgy'></bdo><ul id='ycLgy'></ul><strong id='ycLgy'><tr id='ycLgy'></tr></strong><label id='ycLgy'></label><strike id='ycLgy'></strike><option id='ycLgy'><u id='ycLgy'><ol id='ycLgy'><blockquote id='ycLgy'></blockquote></ol></u></option><table id='ycLgy'></table><i id='ycLgy'><tr id='ycLgy'><dt id='ycLgy'><q id='ycLgy'><span id='ycLgy'><b id='ycLgy'><form id='ycLgy'><ins id='ycLgy'></ins><ul id='ycLgy'></ul><sub id='ycLgy'></sub></form><legend id='ycLgy'></legend><bdo id='ycLgy'><pre id='ycLgy'><center id='ycLgy'></center></pre></bdo></b><th id='ycLgy'></th></span></q></dt></tr></i><div id='ycLgy'><tfoot id='ycLgy'></tfoot><dl id='ycLgy'><fieldset id='ycLgy'></fieldset></dl></div> 栏目导航 前端开发问题Java开发问题C/C++开发问题Python开发问题C#/.NET开发问题php开发问题移动开发问题数据库问题 最新文章 • 承载错误 - invalid_token - 未找到... • Linq - 在多个 (OR) 条件下进行左连... • System.DirectoryServices - 服务器... • 阅读完 JSON 内容后遇到的附加文本:... • 使用 System.IdentityModel.Tokens.J... • ASP.NET Core 5.0 JWT 身份验证总是... • TripleDES:指定的密钥是“TripleDES&... • 反序列化 Newtonsoft.Json 中的自定... • 将 SQL Server varBinary 数据转换为... • .NET 4.0 构建服务器引用程序集警告 ... • 收到错误“无法从 Newtonsoft.Json.L... • RabbitMQ 连接错误没有一个指定的端... 热门文章 • 承载错误 - invalid_token - 未找到... • Linq - 在多个 (OR) 条件下进行左连... • System.DirectoryServices - 服务器... • 阅读完 JSON 内容后遇到的附加文本:... • 使用 System.IdentityModel.Tokens.J... • ASP.NET Core 5.0 JWT 身份验证总是... • TripleDES:指定的密钥是“TripleDES&... • 反序列化 Newtonsoft.Json 中的自定... • 将 SQL Server varBinary 数据转换为... • .NET 4.0 构建服务器引用程序集警告 ... • 收到错误“无法从 Newtonsoft.Json.L... • RabbitMQ 连接错误没有一个指定的端... 热门标签 五金机械 教育培训 机械设备 环保公司 新闻资讯 服装服饰 营销型 轴承 电子元件 零部件 电子科技 电子产品 环保科技 培训机构 电子商城 双语 中英双语 织梦模板 dede 外语学校 竞价网站源码 竞价培训网 门户网站 织梦笑话网 dedecms笑话网 织梦源码 网站建设 搞笑图片 织梦教程 旅游网站源码 织梦旅游网 学校培训 html5 企业织梦源码 医院源码 后台样式 移动营销页 chatgpt 整形医院 大学医院 新手建站 客服代码 洗衣机维修 企业网站 淘宝客 导航菜单 教育网站 学校源码 装修网站 装修模板 美容整形 女性健康 妈妈网 机械源码 建站公司 珠宝首饰 苹果网站 手机资讯 管理平台 织梦模版打包 妇科源码 安卓市场源码 男性时尚网 健康之家 app应用网站 笑话网站 下载站 车辆管理系统 中医院网站 家装网站源码
                网站首页 - 免责声明- 最新公告- 充值相关 - 网站地图 Copyright © 2022-2023 深圳市沃梦达电子商务有限公司 All Rights Reserved. 粤ICP备14083021号