【发布时间】:2015-08-14 07:45:34
【问题描述】:
我使用 ADAL JS 身份验证创建了带有 WEBAPI 后端的 Angular SPA。由于 AD 中没有角色,我需要手动添加角色声明,以便让用户访问不同的 API 控制器。
角色存储在数据库中。我希望在使用 AD 进行身份验证后通过调用 webapi 来注入额外的声明。 webapi 代码可能如下所示。
identity.AddClaim(new Claim("role", "user"));
var ticket = new AuthenticationTicket(identity, props);
var accessToken = Startup.OAuthBearerOptions.AccessTokenFormat.Protect(ticket);
是否可以用这个新令牌替换 ADAL IDtoken?
这是一个可行的解决方案还是有其他更好的方法来处理这个问题?
由于初始令牌是由 AzureAD 生成的,是否可以编辑令牌以添加新的声明?任何帮助表示赞赏。
【问题讨论】:
-
您是否尝试过添加声明?您是否收到错误消息?您应该能够添加声明似乎是合理的,但至少不知道您当前的代码是什么样的,很难为您提供有效的答案。
-
@Claies 我已经使用了这个示例代码。 github.com/AzureADSamples/SinglePageApp-AngularJS-DotNet 我看到 ADAL 已将令牌存储为 idtoken。我正在尝试查看是否可以编辑此令牌以添加角色声明。
-
你真的还没有澄清你的问题。您正在使用 ADAL 进行身份验证,您在 AD 中没有任何角色,因此您想修改令牌以手动添加角色。但是,如果不在 AD 中,每个用户的角色存储在哪里?并且由于您不控制此处的授权管道,您希望在哪里注入额外的信息?
-
角色存储在数据库中。我希望在使用 AD 进行身份验证后通过调用 webapi 来注入额外的声明。 webapi 代码可能如下所示。 identity.AddClaim(new Claim("role", "user")); var ticket = new AuthenticationTicket(身份,道具); var accessToken = Startup.OAuthBearerOptions.AccessTokenFormat.Protect(ticket);是否可以用这个新令牌替换 ADAL ID 令牌这是一个可行的解决方案还是有其他更好的方法来处理这个问题。
-
如果您要为您的问题添加更多上下文,您应该编辑问题并添加额外的信息/代码,cmets 中的代码未格式化并且可能不可读。除此之外,如果不实现自己的
/Token端点并实现自己的管道,我认为您想做的事情是不可能的。
标签: angularjs asp.net-web-api adal