創建自定義提供程序,實現:OAuthProvider,IAuthWithRequest。ServiceStack:如何使用自定義OAuthProvider訪問Azure資源
創建了調用提供者的PreAuthenticate()方法的AuthenticateAttribute。
配置的CorsFeature:
Plugins.Add(new CorsFeature(new[] { "http://localhost:23589", "*" }, allowCredentials: true, allowedHeaders: "Content-Type, Allow, Authorization"));
問題:當提供者的身份驗證方法被調用來從 請求代碼 「login.microsoftonline.com」(authService.Redirect(PreAuthUrlFilter(this, codeRequest));
)以下錯誤被拋出:
XMLHttpRequest無法加載https://login.microsoftonline.com/d331431b-899c-4666-8094-e82e6bfc3964/oaut ... orts%2fpbi & scope = user_impersonation & state = f8e986304a47427d8c6a76767f2ef573。請求的資源上沒有「Access-Control-Allow-Origin」標題。因此,'http://localhost:23589'不允許訪問。
什麼是正確的方式:
- 請求從微軟 的授權碼
- 獲取代碼後面的查詢字符串
- 請求驗證令牌使用的代碼
授權碼授權流程圖
謝謝雅各布。我正在使用你的實現。它很好,直到我嘗試將它集成到我的應用程序:)。當我調用RequestCode然後返回時(RequestCode(authService,session,userSession,tokens);),拋出錯誤。如果我再次調用Authenticate,則代碼爲空。無法弄清楚我錯過了什麼。如何「等待」,獲取代碼,然後請求令牌。 –
問題如下:1.客戶端調用需要訪問Azure的服務。 2.服務調用AAD AuthenticationProvider。 3. AuthenticationProvider請求一個代碼並返回。 4.服務退貨。 5. Microsoft將查詢字符串中的代碼發送出去,但AuthenticationProvider無法獲取它並繼續處理該流程。 –
Jacob,你是否嘗試添加客戶端? –