My thinking is that the public facing site needs to post the user name and password to an api on the nonpublic server,
Sounds correct. The community has no idea how the network is configured but usually a public facing server (Internet) is the only service allowed to access application services (web services). This is accomplished with firewall configuration.
then issue a cookie, but I am confused about how to actually implment this.
UI applications like MVC or Razor Pages still use cookie authentication to authorize requests coming from a browser (user-agent). The initial authentication request flows through the application services rather than hitting the database directly.
Use cookie authentication without ASP.NET Core Identity
Typically OAuth secures web services exposed to the public or applications running in the cloud. It's not clear from your decryption if OAuth is overkill or not.