【问题标题】:Using Azure AD and Getting App Role in C# Windows Application在 C# Windows 应用程序中使用 Azure AD 和获取应用角色
【发布时间】:2020-06-09 11:01:39
【问题描述】:

我需要在客户端对用户进行身份验证并将令牌传递给服务器端应用程序。服务器端应用程序解析令牌并根据角色返回结果。所以我们创建了 C# windows 应用程序作为客户端,Java 应用程序作为服务器端。

我正在尝试使用以下https://docs.microsoft.com/en-us/azure/active-directory/develop/quickstart-v2-windows-desktop 示例在客户端进行身份验证并传递获取授权令牌。但我没有将应用角色分配给用户。

我已通过应用注册在 Azure Active Directory 中注册了应用程序,并在 Manifest 文件中添加了应用角色。

当我收到授权令牌时,我拥有所有详细信息,但角色并未作为令牌的一部分出现。请您指导我,因为我对 Azure 活动目录的了解非常有限

【问题讨论】:

  • 角色需要在API使用的应用注册中定义。您是否有单独的应用注册?
  • 这可能会有所帮助:stackoverflow.com/a/62268719/1658906
  • 要获得角色,您必须将用户/组添加到 Azure AD 企业应用程序中的应用程序
  • @Crowcoder 我已经通过企业应用程序分配了角色,但没有运气:(
  • @juunas 我试过关注,但不知何故我输了。没有得到角色:(

标签: c# windows azure azure-active-directory application-role


【解决方案1】:

要获得应用角色,请遵循本指南:https://docs.microsoft.com/en-us/azure/active-directory/develop/howto-add-app-roles-in-azure-ad-apps

您是否将这些应用角色分配给用户?如果没有为用户分配任何应用角色,则不会在令牌中发送角色声明。

之后它应该在 id_token 中。当您在清单中声明应用程序角色时,还要注意

"allowedMemberTypes": [
    "User"]

如果您希望角色可分配给用户,则它至少需要包含 User。

【讨论】:

  • 是的,我已经分配了角色。我有“AllowedMemberType”:[“用户”]
  • 谢谢!!我已删除应用注册并再次注册,然后在清单文件中创建角色并将其分配给用户。现在我得到了 ID_Token 中的角色。我不确定之前出了什么问题。无论如何感谢大家的帮助。赞赏:)
【解决方案2】:

如果您在获取令牌中的应用角色信息时遇到问题,请检查角色是否为assigned to the user

如果您在根据document 在令牌信息中使用应用角色授权 webAPI 时遇到问题

If you have a backend web API which is separate from the web app, the app role assignments for the web app don't apply to the web API. 

【讨论】:

    猜你喜欢
    • 2015-07-17
    • 2018-02-28
    • 2020-04-27
    • 2020-01-25
    • 1970-01-01
    • 2016-05-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多