我是azure,tokens等的新手...... 我已经“挖掘”了微软文档以及google和stackoverflow,但仍然没有完全理解。
所以我使用带有Owin库的openId从web应用程序(VS2013 .net 4.5.1)连接到azure。我有下一个代码来执行此操作:
public void Configuration(IAppBuilder app)
{
app.SetDefaultSignInAsAuthenticationType(
CookieAuthenticationDefaults.AuthenticationType);
app.UseCookieAuthentication(new CookieAuthenticationOptions());
app.UseOpenIdConnectAuthentication(
new OpenIdConnectAuthenticationOptions
{
MetadataAddress = String.Format(aadInstance, tenant, policy),
AuthenticationType = policy,
ClientId = clientId,
RedirectUri = redirectUri,
PostLogoutRedirectUri = redirectUri,
Notifications = new OpenIdConnectAuthenticationNotifications
{
AuthenticationFailed = AuthenticationFailed
,SecurityTokenValidated = OnSecurityTokenValidated
,AuthorizationCodeReceived = OnAuthorizationCodeReceived
,SecurityTokenReceived = OnSecurityTokenReceived
},
Scope = "openid profile",
ResponseType = "id_token"
};
);
}
private Task OnSecurityTokenValidated(SecurityTokenValidatedNotification<OpenIdConnectMessage, OpenIdConnectAuthenticationOptions> notification)
{
var identity = notification.AuthenticationTicket.Identity;
var claims = notification.OwinContext.Authentication.User.Claims;
ClaimsPrincipal.Current.AddIdentity(identity);
return Task.FromResult(0);
}
它正在运行,但在微软文档中,我发现了下一条指令“目前,ID令牌已签名但未加密。当您的应用收到ID令牌时,它必须验证签名以证明令牌的真实性并验证一些声明在令牌中证明其有效性。应用验证的声明因场景要求而异,但您的应用必须在每种情况下执行一些常见的声明验证。“
但是有SecurityTokenValidated-callback,它有AuthenticationTicket。所以我仍然需要以某种方式验证令牌/勾选或现在它是自动处理的(我在军队中很难自动发生任何事情,但仍然)?
答案 0 :(得分:0)
您正在使用的库为您处理验证。
它将根据Azure AD提供的密钥检查签名是否应该是什么。
因此除了应用程序的特定检查之外,您不需要进行手动检查。例如,某个应用可能只允许某个组的成员访问该应用。如果是这种情况,您需要进行检查。