我正在将AzureAd与OpenId Connect连接,我可以使用我的tenantid客户端ID连接到https://login.microsoftonline.com/并使用以下配置执行身份验证
public void ConfigureAuth(IAppBuilder app)
{
ApplicationDbContext db = new ApplicationDbContext();
app.SetDefaultSignInAsAuthenticationType(CookieAuthenticationDefaults.AuthenticationType);
app.UseCookieAuthentication(new CookieAuthenticationOptions() {
});
app.UseOpenIdConnectAuthentication(
new OpenIdConnectAuthenticationOptions
{
ClientId = clientId,
Authority = Authority,
PostLogoutRedirectUri = postLogoutRedirectUri,
Notifications = new OpenIdConnectAuthenticationNotifications()
{
// If there is a code in the OpenID Connect response, redeem it for an access token and refresh token, and store those away.
AuthorizationCodeReceived = (context) =>
{
var code = context.Code;
ClientCredential credential = new ClientCredential(clientId, appKey);
string signedInUserID = context.AuthenticationTicket.Identity.FindFirst(ClaimTypes.NameIdentifier).Value;
AuthenticationContext authContext = new AuthenticationContext(Authority, new ADALTokenCache(signedInUserID));
AuthenticationResult result = authContext.AcquireTokenByAuthorizationCode(
code, new Uri(HttpContext.Current.Request.Url.GetLeftPart(UriPartial.Path)), credential, graphResourceId);
return Task.FromResult(0);
}
},
});
}
我的问题是从授权代码获取用户令牌后,我无法将其发送回浏览器。我需要将此令牌发送到浏览器以执行同一站点或注册到同一AD的其他站点的api调用。
我尝试设置响应和请求的cookie,但它没有用,我在Action中看不到cookie值。
是否有一种或多种方式可以利用上述样本生成的令牌。
如果任何人可以指出描述OpenId与AzureAd和单点登录连接的文章,那将是完全有用的。
提前致谢, 马赫什古普塔
答案 0 :(得分:0)
查看OpenId协议规范。我已经使用 IdentityServer4 ,如果我使用隐含流,则会在响应网址设置access_token
和id_token
,比如example.com/api/test#access_token=xxxxxxxx&id_token=xxxxxxxx
。尝试以相同的方式追加您的API回复网址(例如,使用重定向),或将此数据作为新的Header
添加到您的回复中。