/// <summary>
        /// Stores the device authorization request.
        /// </summary>
        /// <param name="userCode">The user code.</param>
        /// <param name="data">The data.</param>
        /// <returns></returns>
        public async Task <string> StoreDeviceAuthorizationAsync(string userCode, DeviceCode data)
        {
            var deviceCode = await _handleGenerationService.GenerateAsync();

            await _store.StoreDeviceAuthorizationAsync(deviceCode.Sha256(), userCode.Sha256(), data);

            return(deviceCode);
        }
    /// <summary>
    /// Stores the device authorization request.
    /// </summary>
    /// <param name="userCode">The user code.</param>
    /// <param name="data">The data.</param>
    /// <returns></returns>
    public async Task <string> StoreDeviceAuthorizationAsync(string userCode, DeviceCode data)
    {
        using var activity = Tracing.StoreActivitySource.StartActivity("DefaultDeviceFlowCodeService.SendLogoutNotifStoreDeviceAuthorization");

        var deviceCode = await _handleGenerationService.GenerateAsync();

        await _store.StoreDeviceAuthorizationAsync(deviceCode.Sha256(), userCode.Sha256(), data);

        return(deviceCode);
    }
예제 #3
0
    public async Task StoreDeviceAuthorizationAsync()
    {
        await _deviceFlowStore.StoreDeviceAuthorizationAsync(
            "DeviceCode-Test1",
            "UserCode-Test1",
            new DeviceCode
        {
            ClientId         = "ClientId1",
            AuthorizedScopes = new string[] { "s1", "s2" },
            IsAuthorized     = true,
            Lifetime         = 42,
            RequestedScopes  = new string[] { "rs1" },
            Subject          = new ClaimsPrincipal(
                new[]
            {
                new ClaimsIdentity(new[]
                {
                    new Claim(JwtClaimTypes.Subject, "sid1")
                })
            }
                )
        }
            );

        void Check(DeviceCode deviceCode)
        {
            deviceCode.ClientId.ShouldBe("ClientId1");
            deviceCode.AuthorizedScopes.ShouldNotBeNull();
            deviceCode.AuthorizedScopes.Count().ShouldBe(2);
            deviceCode.AuthorizedScopes.ShouldContain("s1");
            deviceCode.AuthorizedScopes.ShouldContain("s2");
            deviceCode.IsAuthorized.ShouldBeTrue();
            deviceCode.Lifetime.ShouldBe(42);
            deviceCode.RequestedScopes.ShouldNotBeNull();
            deviceCode.RequestedScopes.Count().ShouldBe(1);
            deviceCode.RequestedScopes.ShouldContain("rs1");
            deviceCode.Subject.ShouldNotBeNull();
            deviceCode.Subject.Claims.ShouldContain(x => x.Type == JwtClaimTypes.Subject && x.Value == "sid1");
        }

        Check(await _deviceFlowStore.FindByUserCodeAsync("UserCode-Test1"));
        Check(await _deviceFlowStore.FindByDeviceCodeAsync("DeviceCode-Test1"));
    }
예제 #4
0
 public async Task StoreDeviceCode(string deviceCode, string userCode, [FromBody] DeviceCode data)
 {
     await _store.StoreDeviceAuthorizationAsync(deviceCode, userCode, data);
 }