.net 4.0+ 应用接入openid Server步骤

.net 4.0+ 应用接入openid Server步骤:

Requirements:Microsoft.AspNet.Mvc 5.2.4+

 

1 确认应用是否是katana启动(项目引用了owin,根目录下有startup.cs)。

如果不是katatna启动:

1.1 加入以下nuget包:

// 依赖众多

Microsoft.Owin.Security.OpenIdConnect

// 关键

Identitymodel

Microsoft.Owin.Security.Cookies

//iis用于owin startup 启动

Microsoft.Owin.Host.SystemWeb

Kentor.OwinCookieSaver

 

1.2 项目根目录下添加startup.cs。

如果Global.asax.cs项里有webapi配置,移动到startup.cs里的Configuration方法内:

[assembly: OwinStartup(typeof($yournamespace.Startup))]

namespace $yournamespace

{

    public class Startup

    {

        /// <summary>

        /// hack

        /// </summary>

        public static HttpConfiguration HttpConfiguration { get; private set; }

 

        public void Configuration(IAppBuilder app)

        {

        }

    }

}

 

1.3.       启动项目,确认katana正确启动。

  1. 在Startup.cs的Configuration方法加入openid设置:(见附件)

修改配置项

var ApplicationUrl = "http://localhost/SampleMvc4.x/";//你的应用的外服访问地址

var IdentityUrl = "http://localhost:5000/";//idsvr地址

var ClientId = "mvc5.owin";//你应用的clientid,找管理员注册

var ClientSecret = "secret";//你应用的clientSecret,找管理员注册

IdentityUrl配置项为oauthserver的endpoint地址,确保服务器能访问endpoint,否则应用无法启动。

 

  1. 在需要登录的action或controller上加入[Authorize]属性。

 

此时未带有authcookie的请求会被转向至openidserver 登录界面

 

  1. 获取当前用户信息:

Cnbauth在签出的token内自带用户信息。当授权用户访问时,controller作用域的User属性的Claims会被赋值。附帮助类:

 

在action内使用方式如下:

 退出登录

 public ActionResult Logout()
        {
            Request.GetOwinContext().Authentication.SignOut();
            return Redirect("/");
        }

 

posted @ 2019-06-14 17:20  代码沉思者  阅读(556)  评论(0编辑  收藏  举报