oauth2_microsoft/
lib.rs

1use oauth2_client::re_exports::{Deserialize_enum_str, Scope, Serialize_enum_str};
2
3pub const TENANT_COMMON: &str = "common";
4
5pub mod authorization_code_grant;
6pub mod device_authorization_grant;
7
8pub use authorization_code_grant::MicrosoftProviderForWebApps;
9pub use device_authorization_grant::MicrosoftProviderForDevices;
10
11pub mod extensions;
12pub use extensions::MicrosoftExtensionsBuilder;
13
14pub fn token_url(tenant: impl AsRef<str>) -> String {
15    format!(
16        "https://login.microsoftonline.com/{}/oauth2/v2.0/token",
17        tenant.as_ref()
18    )
19}
20pub fn device_authorization_url(tenant: impl AsRef<str>) -> String {
21    format!(
22        "https://login.microsoftonline.com/{}/oauth2/v2.0/devicecode",
23        tenant.as_ref()
24    )
25}
26pub fn authorization_url(tenant: impl AsRef<str>) -> String {
27    format!(
28        "https://login.microsoftonline.com/{}/oauth2/v2.0/authorize",
29        tenant.as_ref()
30    )
31}
32
33// Ref https://docs.microsoft.com/en-us/azure/active-directory/develop/v2-permissions-and-consent
34#[derive(Deserialize_enum_str, Serialize_enum_str, Debug, Clone, PartialEq, Eq)]
35pub enum MicrosoftScope {
36    //
37    #[serde(rename = "openid")]
38    Openid,
39    #[serde(rename = "email")]
40    Email,
41    #[serde(rename = "profile")]
42    Profile,
43    #[serde(rename = "offline_access")]
44    OfflineAccess,
45    //
46    #[serde(rename = "User.Read")]
47    #[serde(alias = "https://graph.microsoft.com/User.Read")]
48    UserRead,
49    //
50    // TODO
51    //
52    //
53    //
54    //
55    #[serde(other)]
56    Other(String),
57}
58impl Scope for MicrosoftScope {}