如何在不是twitter,facebook或microsoft的MVC项目中使用外部OAuth授权?

Kat*_*Kat 10 asp.net asp.net-mvc oauth owin

我需要更新我的MVC流程以允许外部OAuth流程,如教程中所述.但是,我发现的每个教程都使用facebook/twitter/Microsoft,它已经内置了函数.我需要使用不同的服务器并传入令牌.我是客户,而不是服务器.

我的设置是使用标准SPA项目,登录等.我将不得不将其重定向到带有刷新令牌的页面,并将该刷新令牌存储为我将来对API的请求.我对此没有任何问题,我根本无法做第一次OAuth调用.似乎,我不是唯一一个遇到这种麻烦的人.

对于OAuth 2.0提供程序的此请求,我必须向请求添加访问令牌,然后用户可以登录并单击允许/拒绝.

POST {TokenPath} HTTP/1.1
Host: {AuthorizationServer}
Authorization: Basic {ThirdPartyAuthorizationCode}
Content-Type: application/x-www-form-urlencoded

grant_type = authorization_code
Run Code Online (Sandbox Code Playgroud)

然后我将通过access_token和过期日期从POST获得响应.

那么,我该怎么做呢?

小智 3

您可以在 Apigee 上使用第三方 OAuth 令牌。要在 Apigee Edge 中使用来自第三方 OAuth 系统的令牌,您需要执行以下操作:

配置生成令牌的 OAuthV2 策略,并将 <ExternalAuthorization> 元素设置为 true。如果此元素为 false 或不存在,则 Edge 通常会根据 Apigee Edge 授权存储验证 client_id 和 client_secret。将内部流变量 oauth_external_authorization_status 设置为 true。如果该值为 false(或者该变量不存在),Edge 会假定第三方授权失败并返回错误消息。

通常,根据对第三方授权服务的服务调出,将此变量设置为 true 或 false。您可以查看服务标注响应并相应地设置变量。有关详细信息,请查看 ServiceCallout 策略。设置此变量的另一种技术是将AssignMessage 策略与AssignVariable 元素结合使用,如下所示:

  <AssignMessage name="AssignMessage-SetVariable">
<DisplayName>Assign Message - Set Variable</DisplayName>
<AssignVariable>
    <Name>oauth_external_authorization_status</Name>
    <Value>true</Value>
</AssignVariable>
<IgnoreUnresolvedVariables>true</IgnoreUnresolvedVariables>
Run Code Online (Sandbox Code Playgroud)

参考以下链接:

使用第三方 OAuth 令牌