.net 4.0+ 應用接入openid Server步驟:web
Requirements:Microsoft.AspNet.Mvc 5.2.4+api
1 確認應用是不是katana啓動(項目引用了owin,根目錄下有startup.cs)。服務器
若是不是katatna啓動:cookie
1.1 加入如下nuget包:mvc
// 依賴衆多app
Microsoft.Owin.Security.OpenIdConnectui
// 關鍵spa
Identitymodel.net
Microsoft.Owin.Security.Cookiescode
//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正確啓動。
修改配置項
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,不然應用沒法啓動。
此時未帶有authcookie的請求會被轉向至openidserver 登陸界面
Cnbauth在簽出的token內自帶用戶信息。當受權用戶訪問時,controller做用域的User屬性的Claims會被賦值。附幫助類:
在action內使用方式以下:
退出登陸
public ActionResult Logout() { Request.GetOwinContext().Authentication.SignOut(); return Redirect("/"); }