从 angular AD 客户端获取应用程序的有效持有者令牌
Getting a valid bearer token for an app from a an angular AD client
我已遵循此指南:
https://github.com/Azure-Samples/active-directory-angularjs-singlepageapp
我连接成功了。我想将不记名令牌发送到我的 C# 服务器并使用它来调用我的 workbench(另一个 AD 应用程序)函数。
我正在尝试在邮递员呼叫中使用从 angular 获得的不记名令牌,但它未经授权。重要的是要提到我在 AD 上授予了我的 angular 客户端访问我的 workbench 实例的权限,但它仍然无法正常工作,这让我产生了一些问题:
我已尝试使用本指南中的 .NET 客户端:
http://blog.pomiager.com/post/using-rest-api-in-azure-workbench-blockchain
而且有效。我在这里注意到,在 AuthenticationContext 对象中,它接收使用客户端 ID 和客户端密码的凭据。我注意到在 angular AD 示例中我们从不使用该秘密。但问题是,在查看创建自己的 workbench UI 的指南时,在 authService.js 中,它也从不将秘密作为参数。从这里可以看出:
我知道应该在服务器上设置凭据。在我提供的 angular 示例中还有一个 ASP.NET 服务器
如何从 angularJS AD 示例中为 workbench 创建有效的不记名令牌?我应该用其他东西替换 OWIN 库吗?
谢谢
你有两个选择:
选项 1 - 直接从基于 AngularJS 的 SPA
调用 Workbench API
在此选项中,您使用 Implicit Grant Flow 并仅通过 Delegated Permissions
调用 Workbench API,即在登录用户的上下文中。
还知道 AngularJS SPA 本身不应使用任何客户端机密,因为它存在安全风险,任何使用您的应用程序的人都可以从 JavaScript 代码中提取机密。
这是 Azure 示例中的代码示例。此示例包含 TodoSPA(您的 AngularJS 应用程序)和 ToGoAPI(单独的 API,类似于 WorkBench API)。所以您不需要自己托管 ToGoAPI,但假设 WorkBench API 是您的 ToGoAPI。按照相同的步骤只是权限名称 'Access To Go API' 会有所不同,您将使用 Access Work Bench API
代替。
Call an Azure AD protected Web API in an AngularJS Single Page App
重要代码块-
在 App\Scripts\app.js
中,将端点对象的 属性 名称替换为 To Go API
的新位置,即 Workbench api url 在你的情况下。在 App\Scripts\toGoListSvc.js 中,将 apiEndpoint 变量替换为相同的值。
选项 2 - 创建支持基于 AngularJS 的 SPA
的后端 API
AngularJS SPA 调用此后端服务器基于 API,然后调用 Workbench API。
在此选项中,您可以使用客户端机密并同时使用 Delegated permissions
和 Application Permissions
。
仅当您需要使用上面显示的 Workbench API 屏幕截图中显示的 Administrator
权限时才需要此选项。
从流程的角度,可以直接使用Client Credentials grant flow from backend API if you don't need to call Workbench with context of a user. In case you need to call in context of a user, make use of On behalf of flow.
由于您尝试关注的博客参考仅使用委派权限,我认为您应该适合选项 1,但您可以根据您的要求进一步决定。
我已遵循此指南:
https://github.com/Azure-Samples/active-directory-angularjs-singlepageapp
我连接成功了。我想将不记名令牌发送到我的 C# 服务器并使用它来调用我的 workbench(另一个 AD 应用程序)函数。
我正在尝试在邮递员呼叫中使用从 angular 获得的不记名令牌,但它未经授权。重要的是要提到我在 AD 上授予了我的 angular 客户端访问我的 workbench 实例的权限,但它仍然无法正常工作,这让我产生了一些问题:
我已尝试使用本指南中的 .NET 客户端:
http://blog.pomiager.com/post/using-rest-api-in-azure-workbench-blockchain
而且有效。我在这里注意到,在 AuthenticationContext 对象中,它接收使用客户端 ID 和客户端密码的凭据。我注意到在 angular AD 示例中我们从不使用该秘密。但问题是,在查看创建自己的 workbench UI 的指南时,在 authService.js 中,它也从不将秘密作为参数。从这里可以看出:
我知道应该在服务器上设置凭据。在我提供的 angular 示例中还有一个 ASP.NET 服务器
如何从 angularJS AD 示例中为 workbench 创建有效的不记名令牌?我应该用其他东西替换 OWIN 库吗?
谢谢
你有两个选择:
选项 1 - 直接从基于 AngularJS 的 SPA
调用 Workbench API在此选项中,您使用 Implicit Grant Flow 并仅通过
Delegated Permissions
调用 Workbench API,即在登录用户的上下文中。还知道 AngularJS SPA 本身不应使用任何客户端机密,因为它存在安全风险,任何使用您的应用程序的人都可以从 JavaScript 代码中提取机密。
这是 Azure 示例中的代码示例。此示例包含 TodoSPA(您的 AngularJS 应用程序)和 ToGoAPI(单独的 API,类似于 WorkBench API)。所以您不需要自己托管 ToGoAPI,但假设 WorkBench API 是您的 ToGoAPI。按照相同的步骤只是权限名称 'Access To Go API' 会有所不同,您将使用
Access Work Bench API
代替。Call an Azure AD protected Web API in an AngularJS Single Page App
重要代码块-
在
App\Scripts\app.js
中,将端点对象的 属性 名称替换为To Go API
的新位置,即 Workbench api url 在你的情况下。在 App\Scripts\toGoListSvc.js 中,将 apiEndpoint 变量替换为相同的值。选项 2 - 创建支持基于 AngularJS 的 SPA
的后端 APIAngularJS SPA 调用此后端服务器基于 API,然后调用 Workbench API。
在此选项中,您可以使用客户端机密并同时使用
Delegated permissions
和Application Permissions
。仅当您需要使用上面显示的 Workbench API 屏幕截图中显示的
Administrator
权限时才需要此选项。从流程的角度,可以直接使用Client Credentials grant flow from backend API if you don't need to call Workbench with context of a user. In case you need to call in context of a user, make use of On behalf of flow.
由于您尝试关注的博客参考仅使用委派权限,我认为您应该适合选项 1,但您可以根据您的要求进一步决定。