我们有一个带有impicit流的MVC客户端和CookieAuthentication。现在我们想从javascript调用另一个api(相同的STS),所以我们需要一个accessstoken。
问题:我们如何获得accessstoken。这是我们的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",
}
使用fiddler,我们看到来自Identityserver的accesstoken已经发布回redirceturi,但我们怎么能抓住呢?我们在Notifications
上找到了OpenIdConnectAuthenticationOptions
属性,但这一事件似乎都不合适。
奖金问题:当我们在服务器(mvc)上获得accessstoken时,是否有将其发送到浏览器的最佳方式?将它存储在服务器上,并在每个可能需要调用新api的页面上发送,或者在需要时从javascript请求它?
感谢您提供任何指导
Larsi
答案 0 :(得分:1)
您可以从协议消息中获取访问令牌,如:
Notifications = new OpenIdConnectAuthenticationNotifications
{
MessageReceived = notification =>
{
var message = notification.ProtocolMessage;
var accesstoken = message.AccessToken;
return Task.FromResult(0);
}
}