2015-06-17 31 views
4

如何從Microsoft基於OWIN的中間件產生的cookie中檢索OpenID連接令牌?如何從cookie中檢索OpenID Connect Identity令牌

我正在使用Microsoft.Owin.Security.CookiesMicrosoft.Owin.Security.OpenIdConnect來使用'隱式流程'來保護網站。有時我認爲我可以更好地理解事物,或者能夠排除故障,我可以檢查「原始」標記而不是從它生成的對象模型。

我知道這些信息是通過Cookie存儲的,但還沒有找到我如何從cookie中取回令牌。這是一個開發環境,所以我應該可以訪問任何需要的證書/機密。

我知道令牌應該有3個以句點分隔的段:{header}.{claims}.{signature}。如果我能找到令牌,我知道我可以使用jwt.io查看內容。但是,我的Cookie中沒有任何內容符合該格式。

這是我使用的中間件配置:

app.SetDefaultSignInAsAuthenticationType(CookieAuthenticationDefaults.AuthenticationType); 
app.UseCookieAuthentication(new CookieAuthenticationOptions()); 

app.UseOpenIdConnectAuthentication(
    new OpenIdConnectAuthenticationOptions 
     { 
     ClientId = clientId, 
     Authority = stsAuthority, 
     RedirectUri = baseHostingPath, 
     ResponseType = "id_token", 
     Scope = string.Join(" ", "openid", "profile", "email") 
     }); 

回答

6

如果你想這樣做,只是在調試時,我會建議給一試https://github.com/vibronet/OInspector/tree/dev - 它可以幫助你檢查在提琴手令牌。

如果你想這樣做的代碼,可以確保原料令牌由

  • 添加

    TokenValidationParameters = new TokenValidationParameters 
    { 
        SaveSigninToken = true 
    } 
    

    的選項初始化

  • 保存在ClaimsPrincipal通過某些東西取回令牌

    var ci = (System.Security.Claims.ClaimsIdentity) 
          ClaimsPrincipal.Current.Identity; 
    string token = ((System.IdentityModel.Tokens.BootstrapContext) 
            ci.BootstrapContext).Token; 
    
相關問題