Python Django REST框架-来自外部提供程序的OAuth2使用者API
我试图授权用户使用Oauth2从Django REST框架API访问一些资源 关于Oauth2和API的大多数答案都涉及将API作为提供者 但是我计划与许多RESTAPI共享一个Oauth2提供者,我不知道如何使用它(而不是如何提供Oauth2) 我不知道用户如何登录提供商SSO,然后将其令牌传递给我的消费API,该API必须根据我的提供商对用户进行身份验证(获取其信息,主要是授权) 有人知道如何使用Django REST框架中的Oauth2吗 图: [用户]->[My API][Oauth2提供程序(使用django oauth提供程序)][Active Directory/anything]查看当前的代码似乎是不可能的。django rest框架在内部访问提供者的数据库表,以检查令牌,并使用这些数据对请求进行身份验证Python Django REST框架-来自外部提供程序的OAuth2使用者API,python,django,api,oauth-2.0,django-rest-framework,Python,Django,Api,Oauth 2.0,Django Rest Framework,我试图授权用户使用Oauth2从Django REST框架API访问一些资源 关于Oauth2和API的大多数答案都涉及将API作为提供者 但是我计划与许多RESTAPI共享一个Oauth2提供者,我不知道如何使用它(而不是如何提供Oauth2) 我不知道用户如何登录提供商SSO,然后将其令牌传递给我的消费API,该API必须根据我的提供商对用户进行身份验证(获取其信息,主要是授权) 有人知道如何使用Django REST框架中的Oauth2吗 图: [用户]->[My API][Oauth2提
这对我来说有点违背了OAuth的目的,但现在我们开始。我发现了这些相关的问题,这证实了我认为是我这边的一个解释错误:
- 亚马逊干邑
- 奥克塔
- Auth0
- 谷歌云身份
内省
'SCOPES': {
'read': 'Read scope',
'write': 'Write scope',
'introspection': 'Introspect token scope',
...
}
/introspect/
的端点,它将在该端点侦听任何内省请求。
e、 g.URL:https://example.org/o/introspect/
例如,请求:
POST /o/introspect/ HTTP/1.1
Host: www.example.org
Accept: application/json
Content-Type: application/x-www-form-urlencoded
Authorization: Bearer 5HtUoltwKYKHnfmxRcJu
token=pOt6V4KXoMbhAraTIyA4zgyxH
注意:token
是访问令牌,承载令牌
是Base64($CLIENT\u ID:$CLIENT\u SECRET)
对上述示例请求的响应如下所示:
HTTP/1.1 200 OK
Content-Type: application/json
{
"client_id": "o7dfkjhvHt74F9W20",
"scope": "read write xyz",
"username": "john",
"exp": 1519123438,
"active": true
}
https://example.org/o/introspect/
b。资源服务器身份验证令牌,例如tBvd837tbdHssyT6bhAr9H
或资源服务器自省凭据(即客户端id和客户端机密)
对于不同的身份验证提供程序,上述步骤的实现可能有所不同。但它给出了如何按照rfc合规性完成整个配置的基本概念。我很想知道是否有任何更新。总是强迫OAuth提供者与客户机在同一台机器上似乎是一个非常悲哀的想法,实际上有点挫败了OAuth的一半目的。什么都没有改变。使用远程提供程序的唯一方法是编写自己的身份验证子类。我面临着同样的问题,我正要问完全相同的问题。似乎我必须实现某种自定义身份验证,但我找不到资源服务(本例中的API)如何根据创建令牌的服务验证令牌。我的意思是,我的API获得了令牌,那么我应该如何询问创建它的服务是否有效?使用django_oauth_toolkit,但它没有提供任何似乎对验证令牌有用的端点。@gepatino根据OAuth2规范,提供程序必须提供一个验证令牌的内省端点。然而,这仍然是一个提议的标准。Okta是一个企业IdP,有一个自省端点。您的IdP应该具有类似的机制