1

我們擁有一個MVC客戶端,具有impicit流和CookieAuthentication。現在我們想從javascript調用另一個API(相同的STS),所以我們需要一個accesstoken。Identityserver3在隱式流程中獲得訪問

問題:我們如何獲得accesstoken。這是我們的MVC客戶端安裝:

app.UseCookieAuthentication(new CookieAuthenticationOptions 
     { 
      AuthenticationType = "Cookies", 
      CookieName = "AuthCookieCoolApp", 

     }); 

     app.UseOpenIdConnectAuthentication(new OpenIdConnectAuthenticationOptions 
     { 
      Authority = ConfigurationManager.AppSettings["Authority"], 
      ClientId = "CoolApp", 
      RedirectUri = ConfigurationManager.AppSettings["RedirectUri"], 
      ResponseType = "id_token token", // added token here 
      SignInAsAuthenticationType = "Cookies", 
      Scope = "cool_profile openid profile", 
     } 

使用招我們看到的accessToken從Identityserver回發到redirceturi,但如何才能抓住它?我們在OpenIdConnectAuthenticationOptions上找到Notifications財產,但沒有一個事件似乎適合。

紅利問題:當我們獲得服務器上的accesstoken(mvc)時,將它發送給瀏覽器的方式是什麼?將其存儲在服務器上,並將其發送到每個可能需要調用新api的頁面上,或者在需要時從javascript請求它?

感謝您的任何指導

Larsi

回答

1

您可以從協議消息一樣獲得訪問令牌:

Notifications = new OpenIdConnectAuthenticationNotifications 
      { 
       MessageReceived = notification => 
       { 
        var message = notification.ProtocolMessage; 
        var accesstoken = message.AccessToken; 
        return Task.FromResult(0); 
       } 
      } 
相關問題