Example #1
0
        public async Task <ActionResult> Secret(SecretViewModel model)
        {
            if (!ModelState.IsValid)
            {
                return(View(model));
            }
            var    adminStore            = new IdentityServer3AdminStore();
            var    myCrypto              = new TripleDesEncryption(model.PassCode);
            var    protectedClientSecret = myCrypto.Encrypt(model.OpenClientSecret);
            Secret secret = null;

            if (string.Compare(model.SecretType, "SharedSecret", StringComparison.OrdinalIgnoreCase) == 0)
            {
                var hashedClientSecret = model.OpenClientSecret.Sha256();
                secret = new Secret(hashedClientSecret)
                {
                    Type = model.SecretType
                };
                ProtectedSecretHandle protectedSecretHandle = new ProtectedSecretHandle()
                {
                    ClientId       = model.ClientId,
                    Value          = hashedClientSecret,
                    ProtectedValue = protectedClientSecret
                };
                await adminStore.AddSecretProtectedValue(protectedSecretHandle);
            }
            if (string.Compare(model.SecretType, "X509Thumbprint", StringComparison.OrdinalIgnoreCase) == 0)
            {
                secret = new Secret(model.ThumbPrint)
                {
                    Type = model.SecretType
                };
            }

            var secrets = new List <Secret> {
                secret
            };
            await adminStore.AddClientSecretsToClientAsync(model.ClientId, secrets);

            return(RedirectToAction("Index"));
        }