标签: token

Python Oauth2 - 使用Google登录

我一直在寻找2天的答案,但没有提出任何问题.

我试图在Django上集成Oauth2登录Google.我抛出的代码异常 - "令牌无效".

有时候是这样的:

resp, content = client.request(access_token_url, "POST")
    if resp['status'] != '200':
        print content
        raise Exception("Invalid response from Google."+content)
Run Code Online (Sandbox Code Playgroud)

在google_authenticate()中

请帮我.

我的代码:

    def google_login(request):
    scope = "https://www.googleapis.com/auth/userinfo.profile"

    request_token_url = "https://www.google.com/accounts/OAuthGetRequestToken?scope=%s" % scope
    authorize_url = 'https://www.google.com/accounts/OAuthAuthorizeToken'
    authenticate_url = "https://accounts.google.com/o/oauth2/auth"

    response_type = "code"
    redirect_uri = "http://127.0.0.1:8000/login/google/auth"
    scope = "https://www.googleapis.com/auth/userinfo.profile"

    oauth_key = settings.GOOGLE_KEY
    oauth_secret = settings.GOOGLE_SECRET

    consumer = oauth.Consumer(oauth_key, oauth_secret)
    client = oauth.Client(consumer)

    # Step 1: Get a request token. This is a temporary token that is used for 
    # having …
Run Code Online (Sandbox Code Playgroud)

python oauth token

17
推荐指数
1
解决办法
2万
查看次数

Angular 2/4存储令牌的位置

我有一个用于生成令牌的休息api,我在角度4客户端使用,但问题是在哪里存储此令牌.

在互联网上,我发现我可以存储在本地存储或cookie中.

所以我的问题是,如果商店令牌是本地存储,例如,我刚刚从另一个浏览器复制了有效令牌,那么我将拥有一个有效的令牌,因此存在任何像这样的存储令牌的安全性,并且基本相同用饼干,或者我错过了一些重要的信息?

cookies token local-storage typescript angular

17
推荐指数
2
解决办法
2万
查看次数

如何发出 Apple 登录撤销令牌 POST 请求?

如何构建 swift POST 请求以满足 Sign In With Apple 令牌撤销要求?

我不确定 form-data、client_id、client_secret、token 或 token_type_hint 应该是什么。我能够实现“使用 Apple 登录”来创建用户,但对其中的撤销部分非常迷失。

我希望用 Swift 来执行这个客户端,因为那是最方便的。Firebase 可能正在开发一种内置于其 SDK 中的解决方案,但不确定这是否是适合使用 Firebase 的开发人员的通用解决方案。

https://developer.apple.com/documentation/sign_in_with_apple/revoke_tokens#url

编辑:要求来源https://developer.apple.com/support/offering-account-deletion-in-your-app

以下函数位于同一类 (ViewModel) 中。第一个是我的登录/注册流程。一些代码与 Firebase 流相关,基本上可以忽略,但您可以看到我抓取了 client_secret 的令牌字符串和随机数。第二个函数类似于令牌撤销的 POST 请求(从未显示的删除帐户函数调用)。有人使用这种方法/样板取得过成功吗?

在我的应用程序中点击按钮来测试下面的令牌撤销方法会返回状态代码 400。我无法使用此方法撤销令牌,并且我不确定还能做什么。

public func authorizationController(controller: ASAuthorizationController, didCompleteWithAuthorization authorization: ASAuthorization) {
    // Sign in using Firebase Auth
    if let appleIDCredential = authorization.credential as? ASAuthorizationAppleIDCredential {
        guard let nonce = currentNonce else {
            print("Invalid state: A login callback was received, but no login request was sent.") …
Run Code Online (Sandbox Code Playgroud)

authentication token digital-signature swift

16
推荐指数
2
解决办法
1万
查看次数

WCF如何传递令牌进行身份验证?

我有一个WCF服务,它支持basicHttpBinding和webHttpBinding.当客户端成功登录时,服务器将为客户端生成一个令牌,以便稍后将所有请求传递给服务器.问题是客户端如何将令牌传递给服务器?我不想在每个Web方法上添加额外的参数来保存令牌.

wcf token wcf-security

15
推荐指数
1
解决办法
1万
查看次数

如何在axios中处理401(Authentication Error)并做出反应?

我有一个文件request.js,其中包含axios ajax请求的包装器.我从多个反应组件调用请求函数,当其中一个请求失败时,我想刷新令牌并再次重试所有失败的请求.我可以使用拦截器,但我不知道如何实现它.请帮忙.

request.js

 var client = axios.create({
   baseURL: 'http://192.168.1.3:3000',
     headers: {
     appID: 8,
     version: "1.1.0",
     empID: localStorage.getItem('empID'),
     token: localStorage.getItem('accessToken')
    }
 });

 const request = function(options) {
 const onSuccess = function(response) {
 console.debug('Request Successful!', response);
 return response.data;
 } 
 const onError = function(error) {
    console.error('Request Failed:', error.config);
    if (error.response) {
     console.error('Status:',  error.response.status);
     console.error('Data:',    error.response.data);
     console.error('Headers:', error.response.headers);
    } else {
   console.error('Error Message:', error.message);
 }

  return Promise.reject(error.response || error.message);
 }

 return client(options)
         .then(onSuccess)
         .catch(onError);
         options
 }

 export default request;
Run Code Online (Sandbox Code Playgroud)

javascript token http-status-code-401 reactjs axios

15
推荐指数
5
解决办法
3万
查看次数

.NET Web API:为不同的用户设置不同的刷新令牌到期时间

我正在使用Identity Server 3对我的角客户端进行身份验证并生成访问/刷新令牌.

我目前正在为我的Angular客户端设置刷新令牌在48小时后到期.

使用我的Angular应用程序的一些用户需要连续100天签名,而不必重新输入他们的凭据,是否可以仅为特定用户而不是整个客户端设置刷新令牌的到期时间?

我的数据库中有100个用户,我只希望一个特定用户在100天内不需要重新进行身份验证,而其他用户应该每48小时进行一次身份验证.

有点像:

if (user == "Super Man") {
    AbsoluteRefreshTokenLifetime = TimeSpan.FromDays(100.0).Seconds,
}
Run Code Online (Sandbox Code Playgroud)

这有可能实现吗?或者我是否仅限于为整个客户端设置刷新令牌过期?

谢谢

.net c# token jwt identityserver3

15
推荐指数
1
解决办法
1543
查看次数

访问令牌和刷新令牌最佳实践?如何实施访问和刷新令牌

我正在制作 SPA,并决定使用 JWT 进行身份验证/授权,并且我已经阅读了一些关于 Tokens 与 Cookies 的博客。我了解 cookie 授权的工作原理,并了解基本令牌授权的工作原理。问题是,我看不到刷新令牌如何适应它,在我看来它降低了安全性。让我解释一下,正如我所看到的:

Cookie 方法

当您通过用户名和密码对用户进行身份验证时,您将创建与该用户关联的会话 ID。并将其设置为 cookie,每次客户端调用您的服务器时,它都会发送该 cookie,服务器可以在数据库或其他服务器端存储中查找关联用户。

  • 这种方法容易受到 CSRF (Cross Site Request Forgery) 的攻击 为防止 CSRF 您可以使用带有 cookie 的令牌

  • 服务器还需要不断地查找存储,以查看 cookie 指向哪些用户。

代币方式

当您通过用户名和密码对用户进行身份验证时,您将创建一个签名令牌,在有效负载中包含到期日期、电子邮件地址或用户 ID、角色等。对于安全令牌,应具有较短的到期时间。令牌可以存储在本地存储、会话存储、cookies 的任何地方。我将使用本地存储或会话存储来防止 XSRF。

  • 这容易受到 XSS(跨站点脚本)的攻击,但您可以通过验证 HTML 输入来防止这种情况发生。
  • 由于令牌生命周期短,当令牌过期时,用户必须重新登录。

访问令牌和刷新令牌

所以我想使用刷新令牌来防止用户需要不断登录。所以让我们说一下身份验证,我给用户访问令牌和刷新令牌,当用户访问令牌过期时,用户可以使用刷新令牌来获取新的访问令牌,这是我没有得到的。

  • 假设我将访问令牌存储在本地存储中。如果我还在本地存储中存储 Refresh 令牌,我看不到它有任何用处。因为如果攻击者可以访问本地存储并获得访问令牌,他也可以获得刷新令牌。所以在这种情况下,为什么不让访问令牌长寿命。
  • 如果您将 Refresh 令牌存储为 cookie,它很容易受到 XSRF 的攻击,然后攻击者可以获得新的访问令牌,并使用它。同样在这一点上,为什么不直接使用 Cookie 授权?因为您已经必须查找本地存储以获取刷新令牌,尽管与纯 cookie 授权相比,这种情况发生的频率较低。

最佳做法是什么?

目前我正在考虑使用:

  • 访问令牌(本地存储,短暂的)
  • 刷新令牌(Cookie,长寿)
  • 刷新令牌的令牌(为了防止 XSFR,本地存储,使用一次后过期)

假设它看起来像这样:

  +--------+                                           +---------------+
  |        |------------ Authorization Grant --------->|               |
  |        |                                           |               |
  |        |<--------------- Access Token …
Run Code Online (Sandbox Code Playgroud)

security cookies authorization token

15
推荐指数
1
解决办法
3480
查看次数

为什么 GCC 会删除预处理标记之间的空格?

示例代码:

#define X(x,y)  x y
#define STR_(x) #x
#define STR(x)  STR_(x)
STR(X(Y,Y))
Run Code Online (Sandbox Code Playgroud)

调用:

$ gcc t222.c -std=c11 -pedantic -Wall -Wextra -E -P
"Y Y"

$ gcc t222.c -std=c11 -pedantic -Wall -Wextra -E -P -D"Y()"
"YY"
Run Code Online (Sandbox Code Playgroud)

为什么 GCC 会删除预处理标记之间的空格?

例如, clang 不会:

$ clang t222.c -std=c11 -pedantic -Wall -Wextra -E -P -D"Y()"
"Y Y"
Run Code Online (Sandbox Code Playgroud)

UPD1。,不知何故,gcc 考虑了和之间的空格Y

$ gcc t222.c -std=c11 -pedantic -Wall -Wextra -E -P -D"Y()" -D"Z=STR(X(Y,Y))"
"YY"

$ gcc t222.c -std=c11 -pedantic -Wall -Wextra -E -P …
Run Code Online (Sandbox Code Playgroud)

c gcc token language-lawyer c-preprocessor

15
推荐指数
1
解决办法
818
查看次数

14
推荐指数
3
解决办法
2万
查看次数

如何在处理使用Facebook API调用的服务方法时透明地更新Facebook访问令牌?

我有一个在IIS 7.5和VS 2010中运行的WCF服务.此服务有一些方法在内部使用Facebook C#SDK(版本4.1,而不是最新版本),以便从/向Facebook执行一些GET和POST.由于Facebook将很快删除offline_access我要处理,其中一个访问令牌已过期的情况.

我已经了解了执行身份验证的方式(为了获取代码并在获取访问令牌之后),以便使用Graph API获取Facebook信息(如此处所示).

我有两个问题:

  • 调用我的服务方法并从数据库中检索相应用户的令牌时,是否有办法知道访问令牌是否已过期?
    我已经读过,当执行Facebook API调用并且访问令牌过期时,会抛出以下异常:OAuthException.但有没有更好的方法来检测到期?我不想
    1. 调用Facebook API
    2. 处理异常
    3. 最后更新访问令牌
    4. 使用新的访问令牌重复初始调用.
  • 是否可以透明地更新用户的访问令牌(也将其存储在数据库中)并继续处理服务方法?在资源中,缺少重要的("更新访问令牌")部分(声明为[todo])

我想在服务方法的实现中实现以下方案:

sc = SocialNetworkAccountDao.GetByUser(user)

isExpired = call method to check if the sc.token is expired.

if (isExpired)

{

  newToken = call method for getting new access token

  sc.token = newToken;

  SocialNetworkAccount.Update(sc);

}

Facebook = new Facebook (sc.token)

Facebook.Post( ..... )

--
Run Code Online (Sandbox Code Playgroud)

QAuth对话通信的过程是异步的(执行重定向),并且与访问令牌url的通信以获得访问令牌,这是同步执行的.

最后的问题:

  • 有没有办法让服务方法等待我们从Facebook请求/回调中检索的新访问令牌,以便稍后继续使用新的访问令牌?

c# security facebook token facebook-c#-sdk

14
推荐指数
3
解决办法
7604
查看次数