Orchard CMS, OWIN, OpenID Connect, and Azure Website

本文关键字:and Azure Connect Website OpenID CMS OWIN Orchard | 更新日期: 2023-09-27 18:16:26

我们已经将Orchard部署到Azure网站。但是,当我们启用我们创建的启用OWIN OpenID连接的模块时,我们得到这个结果错误:

数据保护操作失败。这可能是造成的通过不为当前线程的用户加载用户配置文件

它只发生在我启用我们的自定义验证模块时,但它在本地和我们的开发服务器上工作得很好。此问题仅发生在Azure中。

堆栈跟踪:<>之前[cryptoicexception: The data protection operation was unsuccessful.]这可能是由于没有为当前线程的用户上下文加载用户配置文件造成的,这可能是线程模拟时的情况。System.Security.Cryptography.ProtectedData。Protect(Byte[] userData, Byte[] optionalEntropy, DataProtectionScope scope) +514System.Security.Cryptography.DpapiDataProtector。ProviderProtect(Byte[] userData) +75Microsoft.Owin.Security.DataHandler.SecureDataFormat"1。Protect(TData data) +93Microsoft.Owin.Security.OpenIdConnect.d__c.MoveNext () + 1342System.Runtime.CompilerServices.TaskAwaiter。ThrowForNonSuccess(Task Task) +13877064System.Runtime.CompilerServices.TaskAwaiter。HandleNonSuccessAndDebuggerNotification(Task Task) +61Microsoft.Owin.Security.Infrastructure.d__b.MoveNext () + 531System.Runtime.CompilerServices.TaskAwaiter。ThrowForNonSuccess(Task Task) +13877064System.Runtime.CompilerServices.TaskAwaiter。HandleNonSuccessAndDebuggerNotification(Task Task) +61Microsoft.Owin.Security.Infrastructure.d__8.MoveNext () + 631System.Runtime.CompilerServices.TaskAwaiter。ThrowForNonSuccess(Task Task) +13877064System.Runtime.CompilerServices.TaskAwaiter。HandleNonSuccessAndDebuggerNotification(Task Task) +61Microsoft.Owin.Security.Infrastructure.d__5.MoveNext () + 318System.Runtime.CompilerServices.TaskAwaiter。ThrowForNonSuccess(Task Task) +13877064System.Runtime.CompilerServices.TaskAwaiter。HandleNonSuccessAndDebuggerNotification(Task Task) +61System.Runtime.CompilerServices.TaskAwaiter。ValidateEnd(Task Task) +13877209Microsoft.Owin.Security.Infrastructure.d__0.MoveNext () + 1371System.Runtime.CompilerServices.TaskAwaiter。ThrowForNonSuccess(Task Task) +13877064System.Runtime.CompilerServices.TaskAwaiter。HandleNonSuccessAndDebuggerNotification(Task Task) +61System.Runtime.CompilerServices.TaskAwaiter.GetResult () + 28Microsoft.Owin.Security.Infrastructure.d__0.MoveNext () + 1107System.Runtime.CompilerServices.TaskAwaiter。ThrowForNonSuccess(Task Task) +13877064System.Runtime.CompilerServices.TaskAwaiter。HandleNonSuccessAndDebuggerNotification(Task Task) +61Orchard.Mvc.Routes.d__7. movenext () in c:' users ' jphilips 'code'ifb-blue-orchard'src'Orchard'Mvc'Routes' shellroutes .cs:181System.Runtime.CompilerServices.TaskAwaiter。ThrowForNonSuccess(Task Task) +13877064System.Runtime.CompilerServices.TaskAwaiter。HandleNonSuccessAndDebuggerNotification(Task Task) +61System.Web.TaskAsyncHelper。EndTask(IAsyncResult ar) +69System.Web.CallHandlerExecutionStep.System.Web.HttpApplication.IExecutionStep.Execute () + 611System.Web.HttpApplication。ExecuteStep(IExecutionStep step, Boolean& completedsynchronsynchronized) +137

Orchard CMS, OWIN, OpenID Connect, and Azure Website

所以我发现使用这个组合生成重置密码令牌在Azure网站不起作用,并告诉OWIN使用这个扩展方法使用自定义MachineKeyProtectionProvider类。

app.SetDataProtectionProvider(new MachineKeyProtectionProvider());

一旦我设置了OWIN开始使用机器密钥,Azure中的一切都很酷,它工作了。我还为此写了一篇文章。