摘要
我希望通过使用来自Django站点的身份验证来使用Dropbox SSO功能。请注意,我不希望使用SAML作为我的Django站点的后端。
资源
1)Dropbox自定义SSO帮助页面:https://www.dropbox.com/en/help/1921#custom
2)创建SAML响应:https://robinelvin.wordpress.com/2009/09/04/saml-with-django/
3)努力从Google中找到任何执行此类SSO的示例。许多关于人们使用SAML作为Django后端的链接。
问题
在dropbox管理设置中,我可以添加我的X509证书和登录链接。这意味着,当您尝试使用SSO登录Dropbox时,它会使用一个GET请求将您很好地转发到my Django站点的登录页面,查询字符串中有一个SAMLRequest。
但是,我的理解是,一旦用户在Django网站上通过身份验证,我现在需要在他们的SAML登录链接处发出POST请求,并在帖子数据中显示SAMLResponse。使用上面的第二个资源,我相信我可以创建SAMLResponse xml,但我不确定如何将用户重定向到Dropbox SAML登录链接,其中包含Django视图中的SAML数据。
任何帮助都非常感谢。
设法使用django-saml2-idp
获得我需要的功能https://github.com/peopledoc/django-saml2-idp
有关在此处安装的良好文档:https://github.com/peopledoc/django-saml2-idp/blob/master/doc/INSTALL.txt
Dropbox管理控制台中的设置需要X509证书,然后将登录url设置为:https://****.com/idp/login
请注意,我在安装M2Crypto依赖项时遇到了问题,所以使用了Ubuntu包,方法是:< br > < code > sudo apt-get install python-m2 crypto
此外,我正在使用Django 1.9.6,因此需要对<code>视图进行重写。py,URL。py
和注册表。py
文件以使其兼容(需要更新各种导入语句,URL更改为新的列表格式,而不是使用模式)。
按如下方式创建了 Dropbox 处理器:
import base64
import zlib
from saml2idp import base
from saml2idp.xml_render import _get_assertion_xml
def get_assertion_dropbox_xml(parameters, signed=False):
return _get_assertion_xml(ASSERTION_DROPBOX, parameters, signed)
ASSERTION_DROPBOX = (
'<saml:Assertion xmlns:saml="urn:oasis:names:tc:SAML:2.0:assertion" '
'ID="${ASSERTION_ID}" '
'IssueInstant="${ISSUE_INSTANT}" '
'Version="2.0">'
'<saml:Issuer>${ISSUER}</saml:Issuer>'
'${ASSERTION_SIGNATURE}'
'${SUBJECT_STATEMENT}'
'<saml:Conditions NotBefore="${NOT_BEFORE}" NotOnOrAfter="${NOT_ON_OR_AFTER}">'
'<saml:AudienceRestriction>'
'<saml:Audience>${AUDIENCE}</saml:Audience>'
'</saml:AudienceRestriction>'
'</saml:Conditions>'
'<saml:AuthnStatement AuthnInstant="${AUTH_INSTANT}"'
'>'
'<saml:AuthnContext>'
'<saml:AuthnContextClassRef>urn:oasis:names:tc:SAML:2.0:ac:classes:Password</saml:AuthnContextClassRef>'
'</saml:AuthnContext>'
'</saml:AuthnStatement>'
'${ATTRIBUTE_STATEMENT}'
'</saml:Assertion>'
)
class Processor(base.Processor):
def _decode_request(self):
"""
Decodes _request_xml from _saml_request.
"""
self._request_xml = zlib.decompress(base64.b64decode(self._saml_request), -15)
def _format_assertion(self):
self._assertion_xml = get_assertion_dropbox_xml(self._assertion_params, signed=False)
您可以在<code>设置中注册。py文件如下:
SAML2IDP_CONFIG = {
'autosubmit': True,
'certificate_file': '/****/certificate.pem',
'private_key_file': '/****/private-key.pem',
'issuer': 'https://www.****.com',
'signing': True,
}
sampleSpConfig = {
'acs_url': 'https://www.dropbox.com/saml_login',
'processor': 'dropbox.Processor',
}
SAML2IDP_REMOTES = {
'sample': sampleSpConfig,
}
像梦一样工作。希望这能帮助外面的人。
本文向大家介绍Dropbox API 使用Dropbox .NET库上传文件,包括了Dropbox API 使用Dropbox .NET库上传文件的使用技巧和注意事项,需要的朋友参考一下 示例 本示例使用Dropbox .NET库将文件上传到Dropbox帐户,并使用较大文件的上传会话:
如何使用SAML协议中的RelayState指定IdP启动的SSO中SP的登录页? 我在IdP和SP之间设置了一个IdP发起的SSO流程。它可以工作,但是它位于root_path。我需要这个登陆RelayState URL。 我正在使用device。在我的控制器下面找到:
我正在试验使用 Azure AD 作为 IDP 的 Java Web 应用程序中的 SAML 2.0 SSO。 我修改了样本 - https://github.com/Azure-Samples/active-directory-java-webapp-openidconnect 以生成SAML请求。 但是我得到以下错误- AADSTS75005:请求不是有效的Saml2协议消息 我尝试使用Ope
Dropbox 为你提供跨平台的文件在线存储、同步及分享解决方案。目前用户可以获得 2G 存储容量空间。Linux 平台要求 GTK 2.12、GLib 2.14、Nautilus 2.16、Libnotify 0.4.4、Wget 1.10 等包(或这些包的更高版本)。 Dropbox ”在 Linux 下的表现是一个 Nautilus plug-in,在你的主目录下生成一个虚拟目录,把需要同步
我正在尝试使用Python 3.4在dropbox中上传文件。我可以成功地将文件上传到dropbox。但我需要知道如何读取Dropbox文件夹中的文件。例如:如果dropbox文件夹中有文本和csv文件,那么我需要使用Python dropbox API v2读取这些文件的内容?
我知道如何将dropbox API与dropbox core SDK一起使用: 但是,在不使用SDK的情况下,有没有可能做到这一点呢?