我正在开发MVC中的应用程序,我想用Azure活动目录验证我的用户。
为实现这一目标,我使用应用程序URL在Azure活动目录中创建了应用程序,并为应用程序分配了权限。
我还将我的应用程序配置为使用Azure AD身份验证。现在,当我尝试访问bootstrapContext.Token时,它始终为null。
我使用下面的方法来访问bootstrapContext。
var bootstrapContext = ClaimsPrincipal.Current.Identities.First().BootstrapContext as System.IdentityModel.Tokens.BootstrapContext;
string userAccessToken = bootstrapContext.Token;
我搜索了这个,发现我必须更新我的web.config。所以我已将其更新如下
<system.identityModel>
<identityConfiguration saveBootstrapContext="true">
<system.identityModel>
我的主要目标是将UserAssertion用于authContext.AcquireToken方法。 UserAssertion需要bootstrapContext.Token。
根据MvdD的建议,我也试过下面的事情
app.UseWsFederationAuthentication(
new WsFederationAuthenticationOptions
{
Wtrealm = realm,
MetadataAddress = metadataUri,
TokenValidationParameters = new TokenValidationParameters
{
SaveSigninToken = true
}
});
但是现在,我正在低于错误
AADSTS50027: Invalid JWT token. AADSTS50027: Invalid JWT token. Token format not valid.
Trace ID: 0d052707-9aaf-4037-b7c9-4c4aa7cfcc72
Correlation ID: 9a00573b-cfe9-4665-ab81-c0a03eace9d8
Timestamp: 2016-02-08 05:18:01Z
所以有人可以帮我这个吗?
答案 0 :(得分:2)
您的问题并不是很清楚您正在使用哪种协议或库。
如果您使用的是Katana中间件,则应在适当的SaveSigninToken
类中设置AuthenticationOptions
属性。对于WS-Federation协议,它看起来像这样:
app.UseWsFederationAuthentication(
app.UseWsFederationAuthentication(
new WsFederationAuthenticationOptions
{
Wtrealm = realm,
MetadataAddress = metadataUri,
TokenValidationParameters = new TokenValidationParameters
{
SaveSigninToken = true
}
}
);
如果您使用System.IdentityModel
,则需要在IdentityConfiguration
对象上设置SaveBootstrapContext
属性。