![](/img/trans.png)
[英]How does the openid connect owin validate the token from Azure AD?
[英]Orchard CMS, OWIN, OpenID Connect, and Azure Website
我們已經將Orchard部署到Azure網站。 但是,當我們啟用創建的模塊以啟用OWIN OpenID connect時,會收到以下結果錯誤:
數據保護操作失敗。 這可能是由於沒有為當前線程的用戶上下文加載用戶配置文件引起的,這可能是線程正在模擬的情況。
只有在啟用我們的自定義身份驗證模塊時,它才會發生,但在本地和我們的開發服務器上都能正常工作。 僅在Azure中發生此問題。
堆棧跟蹤:
[CryptographicException: The data protection operation was unsuccessful. This may have been caused by not having the user profile loaded for the current thread's user context, which may be the case when the thread is impersonating.] System.Security.Cryptography.ProtectedData.Protect(Byte[] userData, Byte[] optionalEntropy, DataProtectionScope scope) +514 System.Security.Cryptography.DpapiDataProtector.ProviderProtect(Byte[] userData) +75 Microsoft.Owin.Security.DataHandler.SecureDataFormat`1.Protect(TData data) +93 Microsoft.Owin.Security.OpenIdConnect.d__c.MoveNext() +1342 System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task) +13877064 System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) +61 Microsoft.Owin.Security.Infrastructure.d__b.MoveNext() +531 System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task) +13877064 System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) +61 Microsoft.Owin.Security.Infrastructure.d__8.MoveNext() +631 System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task) +13877064 System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) +61 Microsoft.Owin.Security.Infrastructure.d__5.MoveNext() +318 System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task) +13877064 System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) +61 System.Runtime.CompilerServices.TaskAwaiter.ValidateEnd(Task task) +13877209 Microsoft.Owin.Security.Infrastructure.d__0.MoveNext() +1371 System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task) +13877064 System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) +61 System.Runtime.CompilerServices.TaskAwaiter.GetResult() +28 Microsoft.Owin.Security.Infrastructure.d__0.MoveNext() +1107 System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task) +13877064 System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) +61 Orchard.Mvc.Routes.d__7.MoveNext() in c:\Users\jphillips\code\ifb-blue-orchard\src\Orchard\Mvc\Routes\ShellRoute.cs:181 System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task) +13877064 System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) +61 System.Web.TaskAsyncHelper.EndTask(IAsyncResult ar) +69 System.Web.CallHandlerExecutionStep.System.Web.HttpApplication.IExecutionStep.Execute() +611 System.Web.HttpApplication.ExecuteStep(IExecutionStep step, Boolean& completedSynchronously) +137
因此,我發現結合使用此生成重置密碼令牌在Azure網站中不起作用,並告訴OWIN使用此擴展方法使用自定義MachineKeyProtectionProvider類。
app.SetDataProtectionProvider(new MachineKeyProtectionProvider());
設置好OWIN之后,我便開始使用計算機密鑰,並且Azure中的所有內容都很酷並且可以正常使用。 我也寫了一篇關於它的文章 。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.