New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

A way to log into the MP server with your Steam account #1712

Open
CelticMinstrel opened this Issue May 20, 2017 · 15 comments

Comments

Projects
None yet
8 participants
@CelticMinstrel
Member

CelticMinstrel commented May 20, 2017

This is the one new feature that we really need before releasing 1.14 on Steam. Also, if possible, we shouldn't force them to re-enter their password (unless they're running Steam in offline mode).

@knowak

This comment has been minimized.

Show comment
Hide comment
@knowak

knowak May 22, 2017

Does that imply dropping forum-based authentication? Or do we keep both and somehow work around possible collisions, etc.?

knowak commented May 22, 2017

Does that imply dropping forum-based authentication? Or do we keep both and somehow work around possible collisions, etc.?

@CelticMinstrel

This comment has been minimized.

Show comment
Hide comment
@CelticMinstrel

CelticMinstrel May 22, 2017

Member

My thought was that Steam users would add some special character (perhaps a dollar sign) in front of the username to avoid collisions. I'm not sure whether that would have to be done manually by the player or if the UI would offer some toggle that causes it to be done automatically.

So no, not dropping forum-based authentication, unless keeping both is prohibitively difficult (which I do not believe it is).

Member

CelticMinstrel commented May 22, 2017

My thought was that Steam users would add some special character (perhaps a dollar sign) in front of the username to avoid collisions. I'm not sure whether that would have to be done manually by the player or if the UI would offer some toggle that causes it to be done automatically.

So no, not dropping forum-based authentication, unless keeping both is prohibitively difficult (which I do not believe it is).

@pydsigner

This comment has been minimized.

Show comment
Hide comment
@pydsigner

pydsigner May 23, 2017

Contributor

@CelticMinstrel As I keep trying to point out, there's no good identifier that you can get from Steam.

  • Steam name
    • Not unique
    • modifiable
  • Steam ID
    • Unique
    • Static
    • A useless number
  • Steam login
    • Unique
    • Static
    • Intended to be private

The only way you could ever do meaningful Steam login is by either associating a Steam account with a forum account, at which point it's just easier to log in normally and save the password, or by completely rewriting MP logins to be steam oriented.

Contributor

pydsigner commented May 23, 2017

@CelticMinstrel As I keep trying to point out, there's no good identifier that you can get from Steam.

  • Steam name
    • Not unique
    • modifiable
  • Steam ID
    • Unique
    • Static
    • A useless number
  • Steam login
    • Unique
    • Static
    • Intended to be private

The only way you could ever do meaningful Steam login is by either associating a Steam account with a forum account, at which point it's just easier to log in normally and save the password, or by completely rewriting MP logins to be steam oriented.

@pydsigner

This comment has been minimized.

Show comment
Hide comment
@pydsigner

pydsigner May 23, 2017

Contributor

And regardless of that issue, isn't this the sort of thing that's a bit late to put in at this point?

Contributor

pydsigner commented May 23, 2017

And regardless of that issue, isn't this the sort of thing that's a bit late to put in at this point?

@CelticMinstrel

This comment has been minimized.

Show comment
Hide comment
@CelticMinstrel

CelticMinstrel May 24, 2017

Member

@pydsigner — Obviously it would use the Steam name for display. I'm not sure how users would log in though; it might be something rather different than "username and password". I assume you'd use OAuth or something; not sure how that works.

Internally, the server would probably use the Steam ID as an identifier for the user; you'd need to enable the server to have separate internal and visible names for users.

As for the lateness, you're quite right about it being a bit late to put in now, but at the same time, I'm convinced that not having this feature is a major disadvantage for a Steam release; it needs to be in 1.14. I could see maybe putting it off for 1.14.1, though I understand that such significant new features generally aren't added into the stable branch like that.

Member

CelticMinstrel commented May 24, 2017

@pydsigner — Obviously it would use the Steam name for display. I'm not sure how users would log in though; it might be something rather different than "username and password". I assume you'd use OAuth or something; not sure how that works.

Internally, the server would probably use the Steam ID as an identifier for the user; you'd need to enable the server to have separate internal and visible names for users.

As for the lateness, you're quite right about it being a bit late to put in now, but at the same time, I'm convinced that not having this feature is a major disadvantage for a Steam release; it needs to be in 1.14. I could see maybe putting it off for 1.14.1, though I understand that such significant new features generally aren't added into the stable branch like that.

@pydsigner

This comment has been minimized.

Show comment
Hide comment
@pydsigner

pydsigner Jul 9, 2017

Contributor

@CelticMinstrel We might want to reconsider this if we're going to push 1.14 off to 2018. I'll still point out though that a) you can play Wesnoth without ever registering, even on the official MP server; b) there are other games that require a 3rd-party account to play.

Contributor

pydsigner commented Jul 9, 2017

@CelticMinstrel We might want to reconsider this if we're going to push 1.14 off to 2018. I'll still point out though that a) you can play Wesnoth without ever registering, even on the official MP server; b) there are other games that require a 3rd-party account to play.

@GregoryLundberg

This comment has been minimized.

Show comment
Hide comment
@GregoryLundberg

GregoryLundberg Jul 9, 2017

Contributor

As I read it, it would be a violation of the Steam ToS to use the Steam username. We MUST use OpenID to obtain a "Steam ID".

Unfortunately, there is no C++ library for OpenID and we definitely do NOT want to roll our own. So we're forced to call C# or Java to obtain a "Steam ID"

Also, elsewhere, the suggestion was to allow Forum logins using, for example, your Facebook account. This is OAuth2, which, as I read it, is similar to OpenID in concept, but different in implementation.

My suggestion is to table this issue unless and until a certified C++ implementation appears.

Contributor

GregoryLundberg commented Jul 9, 2017

As I read it, it would be a violation of the Steam ToS to use the Steam username. We MUST use OpenID to obtain a "Steam ID".

Unfortunately, there is no C++ library for OpenID and we definitely do NOT want to roll our own. So we're forced to call C# or Java to obtain a "Steam ID"

Also, elsewhere, the suggestion was to allow Forum logins using, for example, your Facebook account. This is OAuth2, which, as I read it, is similar to OpenID in concept, but different in implementation.

My suggestion is to table this issue unless and until a certified C++ implementation appears.

@CelticMinstrel

This comment has been minimized.

Show comment
Hide comment
@CelticMinstrel

CelticMinstrel Jul 9, 2017

Member

@pydsigner does make a decent point in a), and I was unaware of b), so maybe this isn't as important an issue as I'd initially thought...

Member

CelticMinstrel commented Jul 9, 2017

@pydsigner does make a decent point in a), and I was unaware of b), so maybe this isn't as important an issue as I'd initially thought...

@CelticMinstrel CelticMinstrel removed the Blocker label Aug 2, 2017

@gfgtdf

This comment has been minimized.

Show comment
Hide comment
@gfgtdf

gfgtdf Mar 24, 2018

Contributor

any update on this? it is still makred as "milestone:1.14"

Contributor

gfgtdf commented Mar 24, 2018

any update on this? it is still makred as "milestone:1.14"

@CelticMinstrel CelticMinstrel modified the milestones: 1.14.0, 1.14.1 Mar 25, 2018

@CelticMinstrel

This comment has been minimized.

Show comment
Hide comment
@CelticMinstrel

CelticMinstrel Mar 25, 2018

Member

Now is not the time to be adding something like this. It would be nice to get it in for 1.14.1, though I'm not confident we'll be able to. We shall see.

(That said, if someone opens a PR out of the blue for this before 1.14 is released, it might yet get into that version.)

Member

CelticMinstrel commented Mar 25, 2018

Now is not the time to be adding something like this. It would be nice to get it in for 1.14.1, though I'm not confident we'll be able to. We shall see.

(That said, if someone opens a PR out of the blue for this before 1.14 is released, it might yet get into that version.)

@soliton-

This comment has been minimized.

Show comment
Hide comment
@soliton-

soliton- Mar 28, 2018

Member

Internally, the server would probably use the Steam ID as an identifier for the user; you'd need to enable the server to have separate internal and visible names for users.

That is not really possible. There are lots of commands used by players/hosts/moderators that reference users and need to do so unambiguously.

If there is no way to get unique identifiers that we can also display then I don't really see how this can be done at all.

Member

soliton- commented Mar 28, 2018

Internally, the server would probably use the Steam ID as an identifier for the user; you'd need to enable the server to have separate internal and visible names for users.

That is not really possible. There are lots of commands used by players/hosts/moderators that reference users and need to do so unambiguously.

If there is no way to get unique identifiers that we can also display then I don't really see how this can be done at all.

@CelticMinstrel

This comment has been minimized.

Show comment
Hide comment
@CelticMinstrel

CelticMinstrel Mar 29, 2018

Member

I'm not exactly sure how it works in Steam, but I'm pretty sure we could come up with a way that gives Steam users a unique identifier to allow unambiguous reference from commands. For example we could append the numeric Steam ID (that shows up in links) to their display name (eg I would be displayed as "Celtic Minstrel$76561198025004579" if logged in through Steam). Commands would probably need to ignore everything before the $ when determining whether a name actually matches.

I don't think the display name + numeric ID proposal is the best option (as referencing users by a number is not the most convenient), but it is one option that would preserve the uniqueness of usernames. Maybe someone else can come up with a better idea.

Member

CelticMinstrel commented Mar 29, 2018

I'm not exactly sure how it works in Steam, but I'm pretty sure we could come up with a way that gives Steam users a unique identifier to allow unambiguous reference from commands. For example we could append the numeric Steam ID (that shows up in links) to their display name (eg I would be displayed as "Celtic Minstrel$76561198025004579" if logged in through Steam). Commands would probably need to ignore everything before the $ when determining whether a name actually matches.

I don't think the display name + numeric ID proposal is the best option (as referencing users by a number is not the most convenient), but it is one option that would preserve the uniqueness of usernames. Maybe someone else can come up with a better idea.

@loonycyborg

This comment has been minimized.

Show comment
Hide comment
@loonycyborg

loonycyborg Mar 29, 2018

Member

Steam is different than our forum in that steam visible username can be changed at any point via preferences and they aren't guaranteed to be unique. I think it would be better if we had a way to bind particular wesnothd username to particular steam id. Maybe make those binds timed unless the user registers on the forum too and links forum with steam(assuming we support steam in forum too).

On subject of actual logging in via steam I looked into logging via openid in the past. It seemed like major pain but probably doable. On the other hand if we somehow established that we can call steamapi without violating GPL then we could just use that. I think it's not too implausible. We can declare it as part of system API of SteamOS, given that steam is part of base system in it.

Member

loonycyborg commented Mar 29, 2018

Steam is different than our forum in that steam visible username can be changed at any point via preferences and they aren't guaranteed to be unique. I think it would be better if we had a way to bind particular wesnothd username to particular steam id. Maybe make those binds timed unless the user registers on the forum too and links forum with steam(assuming we support steam in forum too).

On subject of actual logging in via steam I looked into logging via openid in the past. It seemed like major pain but probably doable. On the other hand if we somehow established that we can call steamapi without violating GPL then we could just use that. I think it's not too implausible. We can declare it as part of system API of SteamOS, given that steam is part of base system in it.

@vgaming

This comment has been minimized.

Show comment
Hide comment
@vgaming

vgaming Mar 29, 2018

Contributor

Is there a problem with the following approach?:

  • let steam users log in as quests, take the visible name from Steam by default
  • in case the user explicitly wants to register, bind its steamID to wesnothID
  • in case of visible guest name collision, auto-suffix with a number. This is discussable, might as well prompt the user for new name.
Contributor

vgaming commented Mar 29, 2018

Is there a problem with the following approach?:

  • let steam users log in as quests, take the visible name from Steam by default
  • in case the user explicitly wants to register, bind its steamID to wesnothID
  • in case of visible guest name collision, auto-suffix with a number. This is discussable, might as well prompt the user for new name.
@CelticMinstrel

This comment has been minimized.

Show comment
Hide comment
@CelticMinstrel

CelticMinstrel Mar 29, 2018

Member

Regarding using SteamAPI: it's my understanding that it can be done as long as its use isn't linked into the same binary. In other words, have a separate process that just calls SteamAPI and communicates with the Wesnoth process somehow.

It might be also fine to link Wesnoth with the SteamAPI dynamic library at runtime provided that the game can run without it, but I'm not sure.

Member

CelticMinstrel commented Mar 29, 2018

Regarding using SteamAPI: it's my understanding that it can be done as long as its use isn't linked into the same binary. In other words, have a separate process that just calls SteamAPI and communicates with the Wesnoth process somehow.

It might be also fine to link Wesnoth with the SteamAPI dynamic library at runtime provided that the game can run without it, but I'm not sure.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment