我正在使用ASP.Net身份來實現外部登錄。用戶使用Google登錄後,我獲得了Google的外部訪問令牌。然後,我再撥打ObtainLocalAccessToken()進行第二次api調用,它將外部訪問令牌換成新的本地訪問令牌。驗證訪問令牌 - Asp.Net身份
ObtainLocalAccessToken()
調用VerifyExternalAccessToken()通過手動進行http調用和解析user_id來驗證與提供程序的外部訪問令牌。
如何利用ASP.NET標識刪除整個方法VerifyExternalAccessToken()
?
我認爲這就是[HostAuthentication(DefaultAuthenticationTypes.ExternalBearer)]
是不是?我想裝飾ObtainLocalAccessToken()
端點與屬性,並在報頭({'Authorization' : 'Bearer xxx' }
)發送external_access_token,它應該填充User.Identity
無需手動驗證外部訪問令牌?我相信這是目的,但我無法實現它的工作。我從谷歌發送一個有效的外部訪問令牌和它得到了401
我順便說一句這條線在Startup.Auth拒絕:
app.UseOAuthBearerTokens(new OAuthAuthorizationServerOptions
{
TokenEndpointPath = new PathString("/Token"),
Provider = new ApplicationOAuthProvider(),
AuthorizeEndpointPath = new PathString("/AccountApi/ExternalLogin"),
AccessTokenExpireTimeSpan = TimeSpan.FromDays(14),
AllowInsecureHttp = true
});
另外,也可以使用「/令牌」端點爲本地交易外部訪問令牌?哪種方法是正確的?
我會在這裏做一個瘋狂的猜測。但是,我從谷歌使用的每一項服務都是通過https。有可能你不能使用AllowInsecureHttp = true?由於你的錯誤是401,我敢肯定這意味着不允許調用http。 – GELR
嗯,我不能使用ssl,所以我需要它使用http,就像它從我的web應用程序(但不是來自移動)。但是我的理解是否正確:在發送外部訪問令牌時[HostAuthentication(DefaultAuthenticationTypes.ExternalBearer)]應該填充原則?如果是這樣,它將如何知道訪問令牌來自哪個提供者? – parliament
而且401 =未經授權。 「授權已被拒絕。」 – parliament