云服务器价格_云数据库_云主机【优惠】最新活动-搜集站云资讯

专属服务器_济源网站建设_折扣

小七 141 0

快速链接:简化流程详细流程参考刷新令牌使用工具

本博客是一系列教程的一部分,详细解释了SAP云平台后端服务的使用。

在之前的博客文章中,网站用云服务器,我已经详细解释了如何从外部工具(REST客户端)调用后端服务API,以及OAuth安全机制如何工作。在这两个博客中,我们都使用了OAuth授权类型"Password Credentials",因为它更简单一些。在本博客中,我们将使用授权类型"授权码",这更安全。

注意:在这种情况下,最终用户的密码永远不可见,不会作为参数

前提条件

SAP云平台后端服务中的创建API发送。在您的子账户

后台

中创建XSUAA实例粗略地说,在OAuth流程中,客户端(如web应用程序)连接到授权服务器,以便代表用户获取访问令牌。如果用户同意,授权服务器将授予访问权限,并发送有效令牌。客户端使用此令牌调用受保护的API。授权服务器仅在某些验证成功(例如密码、角色)时才授予访问权限。如果客户端使用授权类型"Password Credentials",则授权服务器返回请求的令牌。如前所述。如果客户机使用授权类型"Authorization Code",淘客家园,那么过程就有点不同了。如下所述。

下图描述了OAuth 2.0在使用授权类型授权代码的场景中的流程。

–用户打开一个应用程序(通常是web应用程序,在我们的示例中是REST客户端)–应用程序向授权服务器发送请求,授权服务器显示其特定的登录屏幕–授权服务器向客户端应用程序发送授权代码(返回)–客户端应用程序向授权服务器发送请求,包括授权代码–授权服务器使用访问令牌进行响应–客户端应用程序使用访问令牌调用所需的API

注意:如果是"密码凭证",客户端将显示登录弹出窗口这意味着客户端应用程序需要知道用户密码,因此它必须是受信任的应用程序。如果是"授权码",则登录弹出窗口由授权服务器显示

如果上述步骤听起来让您感到困惑,数据统计,请考虑按以下方式划分:

1。获取代码:用户打开客户端,登录到授权服务器,授权服务器向客户端发送代码2获取令牌:客户端使用代码代表用户从授权服务器获取令牌三。调用API客户端使用令牌调用API

这个结构清楚地表明,与"密码凭据"授予类型相比,有什么区别和好处:客户端永远不会知道任何有关用户密码的信息。相反,它只处理立即过期的授权码。缺点:客户端需要能够接收传入的请求。见下文。

我已经描述了OAuth流两次,一次更简单、更快,另一次更有趣。两者都可以工作,并且几乎相同。

使用"授权码"授权类型简化API调用

在本说明中,我们忽略重定向uri。

如本文所述创建XSUAA服务的新实例或重用现有实例。无论如何,记下clientid和clientsecret。例如:"clientid":你的例子!t12345型"clientsecret":PBJvwKn1OuL51zgisYGLZPYqxa0=

OAuth流程的第一步是:最终用户打开客户机应用程序(在我们的例子中是REST客户机)并被转发到授权服务器,授权服务器显示一个登录屏幕,在那里他输入凭证。

因此对于我们来说,第一步是调用授权服务器以获取授权码。此请求可以在浏览器窗口中完成。我们按照以下方式编写请求:

编写URL

众所周知,使用xsuaa实例的服务密钥中的URL属性。追加负责发布授权码的端点:

注:您可以参考OAuth 2.0规范

添加这些参数:

URL模板:

示例URL:https://acc.authentication.eu10.hana.ondemand.com/oauth/authorize?&响应类型=代码和客户id=sb myuaa!t12345

调用URL

在浏览器中调用URL。你会看到一个登录屏幕。注:对于试用用户:下面的截图显示"用户"是一封电子邮件,所以我们输入试用用户的邮件(不是用户ID"P12345…")

注意:如果未显示登录,则浏览器可能已缓存凭据。如果这些凭据正常,您可以继续,否则您应该清除浏览器缓存

下面的屏幕截图显示登录屏幕是由XSUAA实例发送的:

输入凭据并按"登录"按钮。结果是一条错误消息,但不要惊慌:这是意料之中的(详情见下一节)忽略它并仔细查看URL:

授权服务器试图将授权代码发送到不存在的默认服务器地址。但好消息是:URL包含授权码记下代码,例如ABcNUi2t3O

OK。现在我们有密码了。现在我们需要令牌,

获取令牌与上一篇博客中描述的类似

撰写URL

oauth/token的端点与上一篇博客中描述的相同,加上以下参数:

URL模板:

URL示例:https://subacc.authentication.eu10.hana.ondemand.com/oauth/token?授权类型=授权代码=RUh4otudtP客户id=sb myuaa!t12345

注:您知道,授予类型"Password Credentials"的区别在于,这里我们不向请求添加凭据。相反,只有"code"

Call URL