SQL security and Windows authentication pass-through

  • Hi
    I have created a stored proc for the C# web developer to use that takes a dotted firstname.lastname syntax or an AD account as a parameter, and returns via output parameters whether the passed login is a user of the system and the role within the system. Can someone point me to an article that I can share with the web developer that allows non domain users logging onto the site to be passed as SQL security users when presented with a form for username / password; and AD accounts that are passed through

  • graham.measures - Wednesday, April 5, 2017 8:14 AM

    Hi
    I have created a stored proc for the C# web developer to use that takes a dotted firstname.lastname syntax or an AD account as a parameter, and returns via output parameters whether the passed login is a user of the system and the role within the system. Can someone point me to an article that I can share with the web developer that allows non domain users logging onto the site to be passed as SQL security users when presented with a form for username / password; and AD accounts that are passed through

    I'm not entirely clear on exactly what you're looking for.    If you're seeking to understand the difference between a SQL login and the use of an AD account and Windows authentication, there's ample material available that's just a Google search away.   If you're looking for an article on how to present a form on a website that can accept either an AD account or a firstname.lastname format (to allow creation of a SQL Login), that has any of a number of issues without having a great deal more context.

    Steve (aka sgmunson) 🙂 🙂 🙂
    Rent Servers for Income (picks and shovels strategy)

  • +x

    sgmunson - Wednesday, April 5, 2017 8:52 AM

    +x

    graham.measures - Wednesday, April 5, 2017 8:14 AM

    Hi
    I have created a stored proc for the C# web developer to use that takes a dotted firstname.lastname syntax or an AD account as a parameter, and returns via output parameters whether the passed login is a user of the system and the role within the system. Can someone point me to an article that I can share with the web developer that allows non domain users logging onto the site to be passed as SQL security users when presented with a form for username / password; and AD accounts that are passed through

    I'm not entirely clear on exactly what you're looking for.  If you're seeking to understand the difference between a SQL login and the use of an AD account and Windows authentication, there's ample material available that's just a Google search away.  If you're looking for an article on how to present a form on a website that can accept either an AD account or a firstname.lastname format (to allow creation of a SQL Login), that has any of a number of issues without having a great deal more context.

    Hi Steve
    We are interested in a form on the web site where the user types in a name and password so we can map username/password to SQL Security and invoke the stored proc below. If we detect using.net that the user is logged into the domain, we will not show the form for login & password and will allow the user access to the application, after first passing the credentials to the stored proc below.

    This is my stored proc:-

    CREATE PROC [Base].[RequestUserDetails]
      @ADaccountNameOrUserName NVARCHAR(128)
      ,@Password  BINARY(64)=NULL
      ,@IsRPSuser  BIT OUTPUT
      ,@PasswordNoMatch  BIT=0 OUTPUT
      ,@AccountLockedOut  BIT=0 OUTPUT
      ,@UserRole  VARCHAR(15) OUTPUT
    AS
      DECLARE @TryNumber INT

      SELECT
      @IsRPSuser=1
      ,@PasswordNoMatch=NULL
      ,@UserRole=UserRole
      ,@AccountLockedOut=0
      FROM Base.Users
      WHERE ADAccountName IS NOT NULL
      AND ADAccountName = @ADaccountNameOrUserName
      IF @@ROWCOUNT > 0
      RETURN 0

      SELECT
      @IsRPSuser=1
      ,@PasswordNoMatch=0
      ,@UserRole=UserRole
      ,@AccountLockedOut=0
      FROM Base.Users
      WHERE (UserNameDotted=@ADaccountNameOrUserName AND EncryptedPassword=@Password)
      IF @@ROWCOUNT > 0
      RETURN 0

      SELECT
      @IsRPSuser=1
      ,@PasswordNoMatch=NULL
      ,@UserRole=''
      ,@AccountLockedOut=0
      FROM Base.Users
      WHERE (UserNameDotted=@ADaccountNameOrUserName AND EncryptedPassword IS NULL)
      IF @@ROWCOUNT > 0
      RETURN 0

      SELECT
      @IsRPSuser=1
      ,@PasswordNoMatch=1
      ,@UserRole=''
      ,@AccountLockedOut=0
      FROM Base.Users
      WHERE (UserNameDotted=@ADaccountNameOrUserName AND EncryptedPassword IS NOT NULL)
      IF @@ROWCOUNT > 0
      BEGIN
      UPDATE Base.Users
      SET TryNumber = ISNULL(TryNumber,0)+1
      WHERE UserNameDotted=@ADaccountNameOrUserName

      SELECT @TryNumber= TryNumber FROM Base.Users WHERE UserNameDotted=@ADaccountNameOrUserName
      IF @TryNumber >= 3
      BEGIN
      UPDATE Base.Users
      SET AccountLocked = SYSDATETIME()
      WHERE UserNameDotted=@ADaccountNameOrUserName
      SET @AccountLockedOut=1
      IF @TryNumber > 10
      WAITFOR DELAY '00:00:02'
      -- a scheduled task resets locked out accounts when the sysdatetime() - AccountLocked datetime > 31 minutes
      END
      ELSE
      SET @AccountLockedOut=0
      RETURN 0
      END

      SELECT
      @IsRPSuser=0
      ,@PasswordNoMatch=NULL
      ,@UserRole=NULL

      RETURN -1

    GO

  • As you have the stored procedure, I guess the question is, what help are you looking for?  This is a SQL Server forum as opposed to a web-help kind...

    Steve (aka sgmunson) 🙂 🙂 🙂
    Rent Servers for Income (picks and shovels strategy)

Viewing 4 posts - 1 through 3 (of 3 total)

You must be logged in to reply to this topic. Login to reply