我发现自己想要获取当前应用程序的ASP.NET机器密钥.当然,如果在配置文件中指定了机器密钥,这很容易,但是如果它设置为自动生成,那么在任何地方似乎都没有公共方法来获取它.
基本上我想要它所以我可以为自己编写加密/ MACed cookie,就像ASP.NET Forms Authentication提供程序一样.
有没有人有任何指针或想法?
我遇到了与DataProtectionProvider有关的这个问题,首先我们只有2个.NET Framework项目,现在添加了一个.NET Core项目让我困惑如何执行以下操作:从.NET Framework项目生成密码重置链接,并在.NET Core项目中使用它.两者都使用相同的数据库和用户表,这些表已经相互兼容..NET Framework仍然是Code-First数据库生成中的领先项目.
在两个.NET框架项目中,我使用一个共享代码库,它具有以下代码:
//not sure where I got this from but it is part of the solution for solving
//password link generating and using in two different applications.
public class MachineKeyProtectionProvider : IDataProtectionProvider
{
public IDataProtector Create(params string[] purposes)
{
return new MachineKeyDataProtector(purposes);
}
}
public class MachineKeyDataProtector : IDataProtector
{
private readonly string[] _purposes;
public MachineKeyDataProtector(string[] purposes)
{
_purposes = purposes;
}
public byte[] Protect(byte[] userData)
{
return MachineKey.Protect(userData, _purposes);
} …Run Code Online (Sandbox Code Playgroud) 我有两个.net应用程序.两个应用程序都使用C#的WebAPI 2.O API.
假设一个是父申请,另一个是孩子.父应用程序具有Owin身份验证,所有API均按预期使用授权.
在子应用程序中,我想使用父应用程序中使用的相同授权提供程序.我不想再次为子应用程序使用身份验证.
我尝试了两件事:
在两个应用程序中使用相同的机器密钥
试图创建第三个独立的.net应用程序,它将为这两个应用程序提供身份验证和授权.
第一个没用.我不确定如何实现第二个.
任何帮助,将不胜感激.
谢谢.
我一直试图了解重置密码和帐户确认在ASP.NET身份中的工作原理.我只想知道令牌是否存储,如果存储,在哪里?
我使用密码重置功能时收到的链接看起来像这样
http://localhost:1470/Account/ResetPassword?userId=a8b1389c-df93-4dfc-b463-541507c1a4bc&code=yhUegXIM9SZBpPVbBtv22kg7NO7F96B8MJi9MryAadUY5XYjz8srVkS5UL8Lx%2BLPYTU6a6jhqOrzMUkkMyPbEHPY3Ul6%2B%2F0s0qQvtM%2FLLII3s29FgkcK0OnjX46Bmj9JlFCUx53rOH%2FXMacwnKDzoJ1rbrUyypZiJXloIE50Q6iPuMTUHbX9O%2B3JMZtCVXjhhsHLkTOn9IVoN6uVAOMWNQ%3D%3D
Run Code Online (Sandbox Code Playgroud)
我的猜测是令牌存储在链接本身,因为我无法在其他任何地方找到它的任何痕迹.也许有人确切知道?